Diff
checker
文本
文本
图像
文档
Excel
文件夹
Legal
Enterprise
桌面版
定价
登录
下载 Diffchecker 桌面版
比较文本
查找两个文本文件之间的差异
工具
历史
实时编辑器
折叠未更改行
关闭换行
视图
拆分
统一
比对精度
智能
单词
字符
语法高亮
选择语法
忽略
文本转换
转到第一个差异
编辑输入
Diffchecker Desktop
运行Diffchecker最安全的方式。获取Diffchecker桌面应用:您的差异永远不会离开您的电脑!
获取桌面版
Untitled diff
创建于
11年前
差异永不过期
清除
导出
分享
解释
12 删除
行
总计
删除
字符
总计
删除
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
686 行
全部复制
6 添加
行
总计
添加
字符
总计
添加
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
682 行
全部复制
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Decompiler options: packimports(3)
// Source File Name: TFC_Core.java
// Source File Name: TFC_Core.java
package com.bioxx.tfc.Core;
package com.bioxx.tfc.Core;
import com.bioxx.tfc.Blocks.BlockSlab;
import com.bioxx.tfc.Blocks.BlockSlab;
import com.bioxx.tfc.Chunkdata.ChunkData;
import com.bioxx.tfc.Chunkdata.ChunkData;
import com.bioxx.tfc.Chunkdata.ChunkDataManager;
import com.bioxx.tfc.Chunkdata.ChunkDataManager;
import com.bioxx.tfc.CommonProxy;
import com.bioxx.tfc.CommonProxy;
import com.bioxx.tfc.Core.Player.BodyTempStats;
import com.bioxx.tfc.Core.Player.BodyTempStats;
import com.bioxx.tfc.Core.Player.FoodStatsTFC;
import com.bioxx.tfc.Core.Player.FoodStatsTFC;
import com.bioxx.tfc.Core.Player.InventoryPlayerTFC;
import com.bioxx.tfc.Core.Player.InventoryPlayerTFC;
import com.bioxx.tfc.Core.Player.SkillStats;
import com.bioxx.tfc.Core.Player.SkillStats;
import com.bioxx.tfc.Food.ItemFoodTFC;
import com.bioxx.tfc.Food.ItemFoodTFC;
import com.bioxx.tfc.Items.ItemBlocks.ItemTerraBlock;
import com.bioxx.tfc.Items.ItemBlocks.ItemTerraBlock;
import com.bioxx.tfc.Items.ItemOre;
import com.bioxx.tfc.Items.ItemOre;
import com.bioxx.tfc.Items.ItemTerra;
import com.bioxx.tfc.Items.ItemTerra;
import com.bioxx.tfc.TerraFirmaCraft;
import com.bioxx.tfc.TerraFirmaCraft;
import com.bioxx.tfc.TileEntities.TEMetalSheet;
import com.bioxx.tfc.TileEntities.TEMetalSheet;
import com.bioxx.tfc.TileEntities.TEPartial;
import com.bioxx.tfc.TileEntities.TEPartial;
import com.bioxx.tfc.WorldGen.TFCBiome;
import com.bioxx.tfc.WorldGen.TFCBiome;
import com.bioxx.tfc.WorldGen.WorldCacheManager;
import com.bioxx.tfc.WorldGen.WorldCacheManager;
import com.bioxx.tfc.api.Constant.Global;
import com.bioxx.tfc.api.Constant.Global;
import com.bioxx.tfc.api.Entities.IAnimal;
import com.bioxx.tfc.api.Entities.IAnimal;
import com.bioxx.tfc.api.Enums.EnumFuelMaterial;
import com.bioxx.tfc.api.Enums.EnumFuelMaterial;
import com.bioxx.tfc.api.Food;
import com.bioxx.tfc.api.Food;
import com.bioxx.tfc.api.Interfaces.IFood;
import com.bioxx.tfc.api.Interfaces.IFood;
import com.bioxx.tfc.api.*;
import com.bioxx.tfc.api.*;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.ReflectionHelper;
import cpw.mods.fml.relauncher.ReflectionHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.Side;
import java.nio.ByteBuffer;
import java.nio.ByteBuffer;
import java.util.*;
import java.util.*;
import net.minecraft.block.Block;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFire;
import net.minecraft.block.BlockFire;
import net.minecraft.block.material.Material;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.entity.*;
import net.minecraft.entity.*;
import net.minecraft.entity.ai.attributes.IAttributeInstance;
import net.minecraft.entity.ai.attributes.IAttributeInstance;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.*;
import net.minecraft.util.*;
import net.minecraft.world.*;
import net.minecraft.world.*;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.storage.WorldInfo;
import net.minecraft.world.storage.WorldInfo;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.common.util.ForgeDirection;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.input.Mouse;
// Referenced classes of package com.bioxx.tfc.Core:
// Referenced classes of package com.bioxx.tfc.Core:
// Recipes, TFC_Time, TFC_Climate
// Recipes, TFC_Time, TFC_Climate
public class TFC_Core
public class TFC_Core
{
{
public TFC_Core()
public TFC_Core()
{
{
}
}
public static ChunkDataManager getCDM(World world)
public static ChunkDataManager getCDM(World world)
{
{
int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g;
int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g;
return (ChunkDataManager)cdmMap.get(Integer.valueOf(key));
return (ChunkDataManager)cdmMap.get(Integer.valueOf(key));
}
}
public static ChunkDataManager addCDM(World world)
public static ChunkDataManager addCDM(World world)
{
{
int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g;
int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g;
if(!cdmMap.containsKey(Integer.valueOf(key)))
if(!cdmMap.containsKey(Integer.valueOf(key)))
return (ChunkDataManager)cdmMap.put(Integer.valueOf(key), new ChunkDataManager(world));
return (ChunkDataManager)cdmMap.put(Integer.valueOf(key), new ChunkDataManager(world));
else
else
return (ChunkDataManager)cdmMap.get(Integer.valueOf(key));
return (ChunkDataManager)cdmMap.get(Integer.valueOf(key));
}
}
public static ChunkDataManager removeCDM(World world)
public static ChunkDataManager removeCDM(World world)
{
{
int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g;
int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g;
return (ChunkDataManager)cdmMap.remove(Integer.valueOf(key));
return (ChunkDataManager)cdmMap.remove(Integer.valueOf(key));
}
}
public static int getMouseX()
public static int getMouseX()
{
{
ScaledResolution scaledresolution = new ScaledResolution(Minecraft.func_71410_x(), Minecraft.func_71410_x().field_71443_c, Minecraft.func_71410_x().field_71440_d);
ScaledResolution scaledresolution = new ScaledResolution(Minecraft.func_71410_x(), Minecraft.func_71410_x().field_71443_c, Minecraft.func_71410_x().field_71440_d);
int i = scaledresolution.func_78326_a();
int i = scaledresolution.func_78326_a();
int k = (Mouse.getX() * i) / Minecraft.func_71410_x().field_71443_c;
int k = (Mouse.getX() * i) / Minecraft.func_71410_x().field_71443_c;
return k;
return k;
}
}
public static int getMouseY()
public static int getMouseY()
{
{
ScaledResolution scaledresolution = new ScaledResolution(Minecraft.func_71410_x(), Minecraft.func_71410_x().field_71443_c, Minecraft.func_71410_x().field_71440_d);
ScaledResolution scaledresolution = new ScaledResolution(Minecraft.func_71410_x(), Minecraft.func_71410_x().field_71443_c, Minecraft.func_71410_x().field_71440_d);
int j = scaledresolution.func_78328_b();
int j = scaledresolution.func_78328_b();
int l = j - (Mouse.getY() * j) / Minecraft.func_71410_x().field_71440_d - 1;
int l = j - (Mouse.getY() * j) / Minecraft.func_71410_x().field_71440_d - 1;
return l;
return l;
}
}
static Boolean isBlockAboveSolid(IBlockAccess blockAccess, int i, int j, int k)
static Boolean isBlockAboveSolid(IBlockAccess blockAccess, int i, int j, int k)
{
{
if(TerraFirmaCraft.proxy.getCurrentWorld().func_147439_a(i, j + 1, k).func_149662_c())
if(TerraFirmaCraft.proxy.getCurrentWorld().func_147439_a(i, j + 1, k).func_149662_c())
return Boolean.valueOf(true);
return Boolean.valueOf(true);
else
else
return Boolean.valueOf(false);
return Boolean.valueOf(false);
}
}
public static int getExtraEquipInventorySize()
public static int getExtraEquipInventorySize()
{
{
return 1;
return 1;
}
}
public static InventoryPlayer getNewInventory(EntityPlayer player)
public static InventoryPlayer getNewInventory(EntityPlayer player)
{
{
InventoryPlayer ip = player.field_71071_by;
InventoryPlayer ip = player.field_71071_by;
NBTTagList nbt = new NBTTagList();
NBTTagList nbt = new NBTTagList();
nbt = player.field_71071_by.func_70442_a(nbt);
nbt = player.field_71071_by.func_70442_a(nbt);
ip = new InventoryPlayerTFC(player);
ip = new InventoryPlayerTFC(player);
ip.func_70443_b(nbt);
ip.func_70443_b(nbt);
return ip;
return ip;
}
}
public static ItemStack RandomGem(Random random, int rockType)
public static ItemStack RandomGem(Random random, int rockType)
{
{
ItemStack is = null;
ItemStack is = null;
if(random.nextInt(500) == 0)
if(random.nextInt(500) == 0)
{
{
ArrayList items = new ArrayList();
ArrayList items = new ArrayList();
items.add(new ItemStack(TFCItems.GemAgate, 1, 0));
items.add(new ItemStack(TFCItems.GemAgate, 1, 0));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 0));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 0));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 0));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 0));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 0));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 0));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 0));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 0));
items.add(new ItemStack(TFCItems.GemJade, 1, 0));
items.add(new ItemStack(TFCItems.GemJade, 1, 0));
items.add(new ItemStack(TFCItems.GemJasper, 1, 0));
items.add(new ItemStack(TFCItems.GemJasper, 1, 0));
items.add(new ItemStack(TFCItems.GemOpal, 1, 0));
items.add(new ItemStack(TFCItems.GemOpal, 1, 0));
items.add(new ItemStack(TFCItems.GemRuby, 1, 0));
items.add(new ItemStack(TFCItems.GemRuby, 1, 0));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 0));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 0));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 0));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 0));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 0));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 0));
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
} else
} else
if(random.nextInt(1000) == 0)
if(random.nextInt(1000) == 0)
{
{
ArrayList items = new ArrayList();
ArrayList items = new ArrayList();
items.add(new ItemStack(TFCItems.GemAgate, 1, 1));
items.add(new ItemStack(TFCItems.GemAgate, 1, 1));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 1));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 1));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 1));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 1));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 1));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 1));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 1));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 1));
items.add(new ItemStack(TFCItems.GemJade, 1, 1));
items.add(new ItemStack(TFCItems.GemJade, 1, 1));
items.add(new ItemStack(TFCItems.GemJasper, 1, 1));
items.add(new ItemStack(TFCItems.GemJasper, 1, 1));
items.add(new ItemStack(TFCItems.GemOpal, 1, 1));
items.add(new ItemStack(TFCItems.GemOpal, 1, 1));
items.add(new ItemStack(TFCItems.GemRuby, 1, 1));
items.add(new ItemStack(TFCItems.GemRuby, 1, 1));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 1));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 1));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 1));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 1));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 1));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 1));
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
} else
} else
if(random.nextInt(2000) == 0)
if(random.nextInt(2000) == 0)
{
{
ArrayList items = new ArrayList();
ArrayList items = new ArrayList();
items.add(new ItemStack(TFCItems.GemAgate, 1, 2));
items.add(new ItemStack(TFCItems.GemAgate, 1, 2));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 2));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 2));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 2));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 2));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 2));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 2));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 2));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 2));
items.add(new ItemStack(TFCItems.GemJade, 1, 2));
items.add(new ItemStack(TFCItems.GemJade, 1, 2));
items.add(new ItemStack(TFCItems.GemJasper, 1, 2));
items.add(new ItemStack(TFCItems.GemJasper, 1, 2));
items.add(new ItemStack(TFCItems.GemOpal, 1, 2));
items.add(new ItemStack(TFCItems.GemOpal, 1, 2));
items.add(new ItemStack(TFCItems.GemRuby, 1, 2));
items.add(new ItemStack(TFCItems.GemRuby, 1, 2));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 2));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 2));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 2));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 2));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 2));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 2));
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
} else
} else
if(random.nextInt(4000) == 0)
if(random.nextInt(4000) == 0)
{
{
ArrayList items = new ArrayList();
ArrayList items = new ArrayList();
items.add(new ItemStack(TFCItems.GemAgate, 1, 3));
items.add(new ItemStack(TFCItems.GemAgate, 1, 3));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 3));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 3));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 3));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 3));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 3));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 3));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 3));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 3));
items.add(new ItemStack(TFCItems.GemJade, 1, 3));
items.add(new ItemStack(TFCItems.GemJade, 1, 3));
items.add(new ItemStack(TFCItems.GemJasper, 1, 3));
items.add(new ItemStack(TFCItems.GemJasper, 1, 3));
items.add(new ItemStack(TFCItems.GemOpal, 1, 3));
items.add(new ItemStack(TFCItems.GemOpal, 1, 3));
items.add(new ItemStack(TFCItems.GemRuby, 1, 3));
items.add(new ItemStack(TFCItems.GemRuby, 1, 3));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 3));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 3));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 3));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 3));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 3));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 3));
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
} else
} else
if(random.nextInt(8000) == 0)
if(random.nextInt(8000) == 0)
{
{
ArrayList items = new ArrayList();
ArrayList items = new ArrayList();
items.add(new ItemStack(TFCItems.GemAgate, 1, 4));
items.add(new ItemStack(TFCItems.GemAgate, 1, 4));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 4));
items.add(new ItemStack(TFCItems.GemAmethyst, 1, 4));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 4));
items.add(new ItemStack(TFCItems.GemBeryl, 1, 4));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 4));
items.add(new ItemStack(TFCItems.GemEmerald, 1, 4));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 4));
items.add(new ItemStack(TFCItems.GemGarnet, 1, 4));
items.add(new ItemStack(TFCItems.GemJade, 1, 4));
items.add(new ItemStack(TFCItems.GemJade, 1, 4));
items.add(new ItemStack(TFCItems.GemJasper, 1, 4));
items.add(new ItemStack(TFCItems.GemJasper, 1, 4));
items.add(new ItemStack(TFCItems.GemOpal, 1, 4));
items.add(new ItemStack(TFCItems.GemOpal, 1, 4));
items.add(new ItemStack(TFCItems.GemRuby, 1, 4));
items.add(new ItemStack(TFCItems.GemRuby, 1, 4));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 4));
items.add(new ItemStack(TFCItems.GemSapphire, 1, 4));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 4));
items.add(new ItemStack(TFCItems.GemTourmaline, 1, 4));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 4));
items.add(new ItemStack(TFCItems.GemTopaz, 1, 4));
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)];
}
}
return is;
return is;
}
}
public static void SurroundWithLeaves(World world, int i, int j, int k, int meta, Random R)
public static void SurroundWithLeaves(World world, int i, int j, int k, int meta, Random R)
{
{
for(int y = 2; y >= -2; y--)
for(int y = 2; y >= -2; y--)
{
{
for(int x = 2; x >= -2; x--)
for(int x = 2; x >= -2; x--)
{
{
for(int z = 2; z >= -2; z--)
for(int z = 2; z >= -2; z--)
if(world.func_147437_c(i + x, j + y, k + z))
if(world.func_147437_c(i + x, j + y, k + z))
world.func_147465_d(i + x, j + y, k + z, TFCBlocks.Leaves, meta, 2);
world.func_147465_d(i + x, j + y, k + z, TFCBlocks.Leaves, meta, 2);
}
}
}
}
}
}
public static void SetupWorld(World world)
public static void SetupWorld(World world)
{
{
long seed = world.func_72905_C();
long seed = world.func_72905_C();
Random R = new Random(seed);
Random R = new Random(seed);
world.field_73011_w.func_76558_a(world);
world.field_73011_w.func_76558_a(world);
Recipes.registerAnvilRecipes(R, world);
Recipes.registerAnvilRecipes(R, world);
}
}
public static void SetupWorld(World w, long seed)
public static void SetupWorld(World w, long seed)
{
{
try
try
{
{
ReflectionHelper.setPrivateValue(net/minecraft/world/storage/WorldInfo, w.func_72912_H(), Long.valueOf(seed), 0);
ReflectionHelper.setPrivateValue(net/minecraft/world/storage/WorldInfo, w.func_72912_H(), Long.valueOf(seed), 0);
SetupWorld(w);
SetupWorld(w);
}
}
catch(Exception exception) { }
catch(Exception exception) { }
}
}
public static boolean isRawStone(World world, int x, int y, int z)
public static boolean isRawStone(World world, int x, int y, int z)
{
{
Block block = world.func_147439_a(x, y, z);
Block block = world.func_147439_a(x, y, z);
return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneSed || block == TFCBlocks.StoneMM;
return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneSed || block == TFCBlocks.StoneMM;
}
}
public static boolean isSmoothStone(World world, int x, int y, int z)
public static boolean isSmoothStone(World world, int x, int y, int z)
{
{
Block block = world.func_147439_a(x, y, z);
Block block = world.func_147439_a(x, y, z);
return block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneMMSmooth;
return block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneMMSmooth;
}
}
public static boolean isSmoothStone(Block block)
public static boolean isSmoothStone(Block block)
{
{
return block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneMMSmooth;
return block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneMMSmooth;
}
}
public static boolean isBrickStone(Block block)
public static boolean isBrickStone(Block block)
{
{
return block == TFCBlocks.StoneIgExBrick || block == TFCBlocks.StoneIgInBrick || block == TFCBlocks.StoneSedBrick || block == TFCBlocks.StoneMMBrick;
return block == TFCBlocks.StoneIgExBrick || block == TFCBlocks.StoneIgInBrick || block == TFCBlocks.StoneSedBrick || block == TFCBlocks.StoneMMBrick;
}
}
public static boolean isRawStone(Block block)
public static boolean isRawStone(Block block)
{
{
return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneSed || block == TFCBlocks.StoneMM;
return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneSed || block == TFCBlocks.StoneMM;
}
}
public static boolean isOreStone(Block block)
public static boolean isOreStone(Block block)
{
{
return block == TFCBlocks.Ore || block == TFCBlocks.Ore2 || block == TFCBlocks.Ore3;
return block == TFCBlocks.Ore || block == TFCBlocks.Ore2 || block == TFCBlocks.Ore3;
}
}
public static boolean isNaturalStone(Block block)
public static boolean isNaturalStone(Block block)
{
{
return isRawStone(block) || isOreStone(block);
return isRawStone(block) || isOreStone(block);
}
}
public static boolean isCobbleStone(Block block)
public static boolean isCobbleStone(Block block)
{
{
return block == TFCBlocks.StoneIgExCobble || block == TFCBlocks.StoneIgInCobble || block == TFCBlocks.StoneSedCobble || block == TFCBlocks.StoneMMCobble;
return block == TFCBlocks.StoneIgExCobble || block == TFCBlocks.StoneIgInCobble || block == TFCBlocks.StoneSedCobble || block == TFCBlocks.StoneMMCobble;
}
}
public static boolean isStoneIgEx(Block block)
public static boolean isStoneIgEx(Block block)
{
{
return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgExCobble || block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgExBrick || block == TFCBlocks.WallRawIgEx || block == TFCBlocks.WallCobbleIgEx || block == TFCBlocks.WallBrickIgEx || block == TFCBlocks.WallSmoothIgEx;
return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgExCobble || block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgExBrick || block == TFCBlocks.WallRawIgEx || block == TFCBlocks.WallCobbleIgEx || block == TFCBlocks.WallBrickIgEx || block == TFCBlocks.WallSmoothIgEx;
}
}
public static boolean isStoneIgIn(Block block)
public static boolean isStoneIgIn(Block block)
{
{
return block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneIgInCobble || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneIgInBrick || block == TFCBlocks.WallRawIgIn || block == TFCBlocks.WallCobbleIgIn || block == TFCBlocks.WallBrickIgIn || block == TFCBlocks.WallSmoothIgIn;
return block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneIgInCobble || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneIgInBrick || block == TFCBlocks.WallRawIgIn || block == TFCBlocks.WallCobbleIgIn || block == TFCBlocks.WallBrickIgIn || block == TFCBlocks.WallSmoothIgIn;
}
}
public static boolean isStoneSed(Block block)
public static boolean isStoneSed(Block block)
{
{
return block == TFCBlocks.StoneSed || block == TFCBlocks.StoneSedCobble || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneSedBrick || block == TFCBlocks.WallRawSed || block == TFCBlocks.WallCobbleSed || block == TFCBlocks.WallBrickSed || block == TFCBlocks.WallSmoothSed;
return block == TFCBlocks.StoneSed || block == TFCBlocks.StoneSedCobble || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneSedBrick || block == TFCBlocks.WallRawSed || block == TFCBlocks.WallCobbleSed || block == TFCBlocks.WallBrickSed || block == TFCBlocks.WallSmoothSed;
}
}
public static boolean isStoneMM(Block block)
public static boolean isStoneMM(Block block)
{
{
return block == TFCBlocks.StoneMM || block == TFCBlocks.StoneMMCobble || block == TFCBlocks.StoneMMSmooth || block == TFCBlocks.StoneMMBrick || block == TFCBlocks.WallRawMM || block == TFCBlocks.WallCobbleMM || block == TFCBlocks.WallBrickMM || block == TFCBlocks.WallSmoothMM;
return block == TFCBlocks.StoneMM || block == TFCBlocks.StoneMMCobble || block == TFCBlocks.StoneMMSmooth || block == TFCBlocks.StoneMMBrick || block == TFCBlocks.WallRawMM || block == TFCBlocks.WallCobbleMM || block == TFCBlocks.WallBrickMM || block == TFCBlocks.WallSmoothMM;
}
}
public static boolean isDirt(Block block)
public static boolean isDirt(Block block)
{
{
return block == TFCBlocks.Dirt || block == TFCBlocks.Dirt2;
return block == TFCBlocks.Dirt || block == TFCBlocks.Dirt2;
}
}
public static boolean isFarmland(Block block)
public static boolean isFarmland(Block block)
{
{
return block == TFCBlocks.tilledSoil || block == TFCBlocks.tilledSoil2;
return block == TFCBlocks.tilledSoil || block == TFCBlocks.tilledSoil2;
}
}
public static boolean isGrass(Block block)
public static boolean isGrass(Block block)
{
{
return block == TFCBlocks.Grass || block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.PeatGrass || block == TFCBlocks.DryGrass || block == TFCBlocks.DryGrass2;
return block == TFCBlocks.Grass || block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.PeatGrass || block == TFCBlocks.DryGrass || block == TFCBlocks.DryGrass2;
}
}
public static boolean isGrassNormal(Block block)
public static boolean isGrassNormal(Block block)
{
{
return block == TFCBlocks.Grass || block == TFCBlocks.Grass2;
return block == TFCBlocks.Grass || block == TFCBlocks.Grass2;
}
}
public static boolean isLushGrass(Block block)
public static boolean isLushGrass(Block block)
{
{
return block == TFCBlocks.Grass || block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.PeatGrass;
return block == TFCBlocks.Grass || block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.PeatGrass;
}
}
public static boolean isClayGrass(Block block)
public static boolean isClayGrass(Block block)
{
{
return block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2;
return block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2;
}
}
public static boolean isPeatGrass(Block block)
public static boolean isPeatGrass(Block block)
{
{
return block == TFCBlocks.PeatGrass;
return block == TFCBlocks.PeatGrass;
}
}
public static boolean isDryGrass(Block block)
public static boolean isDryGrass(Block block)
{
{
return block == TFCBlocks.DryGrass || block == TFCBlocks.DryGrass2;
return block == TFCBlocks.DryGrass || block == TFCBlocks.DryGrass2;
}
}
public static boolean isGrassType1(Block block)
public static boolean isGrassType1(Block block)
{
{
return block == TFCBlocks.Grass || block == TFCBlocks.ClayGrass || block == TFCBlocks.DryGrass;
return block == TFCBlocks.Grass || block == TFCBlocks.ClayGrass || block == TFCBlocks.DryGrass;
}
}
public static boolean isGrassType2(Block block)
public static boolean isGrassType2(Block block)
{
{
return block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.DryGrass2;
return block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.DryGrass2;
}
}
public static boolean isClay(Block block)
public static boolean isClay(Block block)
{
{
return block == TFCBlocks.Clay || block == TFCBlocks.Clay2;
return block == TFCBlocks.Clay || block == TFCBlocks.Clay2;
}
}
public static boolean isSand(Block block)
public static boolean isSand(Block block)
{
{
return block == TFCBlocks.Sand || block == TFCBlocks.Sand2;
return block == TFCBlocks.Sand || block == TFCBlocks.Sand2;
}
}
public static boolean isPeat(Block block)
public static boolean isPeat(Block block)
{
{
return block == TFCBlocks.Peat;
return block == TFCBlocks.Peat;
}
}
复制
已复制
复制
已复制
public static boolean isNotWater(Block block)
{
return !isSaltWater(block) || !isFreshWater(block) || !isHotWater(block);
}
public static boolean isHotWater(Block block)
public static boolean isHotWater(Block block)
{
{
复制
已复制
复制
已复制
return block == TFCBlocks.HotWater
|| block == TFCBlocks.HotWaterStationary
;
return block == TFCBlocks.HotWater
;
}
}
public static boolean isWater(Block block)
public static boolean isWater(Block block)
{
{
return isSaltWater(block) || isFreshWater(block);
return isSaltWater(block) || isFreshWater(block);
}
}
public static boolean isWaterFlowing(Block block)
public static boolean isWaterFlowing(Block block)
{
{
复制
已复制
复制
已复制
return block == TFCBlocks.SaltWater || block == TFCBlocks.FreshWater
;
return block == TFCBlocks.SaltWater || block == TFCBlocks.FreshWater
|| block == TFCBlocks.HotWater
;
}
}
public static boolean isSaltWater(Block block)
public static boolean isSaltWater(Block block)
{
{
return block == TFCBlocks.SaltWater || block == TFCBlocks.SaltWaterStationary;
return block == TFCBlocks.SaltWater || block == TFCBlocks.SaltWaterStationary;
}
}
public static boolean isSaltWaterIncludeIce(Block block, int meta, Material mat)
public static boolean isSaltWaterIncludeIce(Block block, int meta, Material mat)
{
{
return block == TFCBlocks.SaltWater || block == TFCBlocks.SaltWaterStationary || mat == Material.field_151588_w && meta == 0;
return block == TFCBlocks.SaltWater || block == TFCBlocks.SaltWaterStationary || mat == Material.field_151588_w && meta == 0;
}
}
public static boolean isFreshWater(Block block)
public static boolean isFreshWater(Block block)
{
{
return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary;
return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary;
}
}
public static boolean isFreshWaterIncludeIce(Block block, int meta)
public static boolean isFreshWaterIncludeIce(Block block, int meta)
{
{
return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary || block == TFCBlocks.Ice && meta != 0;
return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary || block == TFCBlocks.Ice && meta != 0;
}
}
public static boolean isFreshWaterIncludeIce(Block block, int meta, Material mat)
public static boolean isFreshWaterIncludeIce(Block block, int meta, Material mat)
{
{
return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary || mat == Material.field_151588_w && meta != 0;
return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary || mat == Material.field_151588_w && meta != 0;
}
}
public static boolean isSoil(Block block)
public static boolean isSoil(Block block)
{
{
return isGrass(block) || isDirt(block) || isClay(block) || isPeat(block);
return isGrass(block) || isDirt(block) || isClay(block) || isPeat(block);
}
}
public static boolean isSoilOrGravel(Block block)
public static boolean isSoilOrGravel(Block block)
{
{
return isGrass(block) || isDirt(block) || isClay(block) || isPeat(block) || isGravel(block);
return isGrass(block) || isDirt(block) || isClay(block) || isPeat(block) || isGravel(block);
}
}
public static boolean isGravel(Block block)
public static boolean isGravel(Block block)
{
{
return block == TFCBlocks.Gravel || block == TFCBlocks.Gravel2;
return block == TFCBlocks.Gravel || block == TFCBlocks.Gravel2;
}
}
public static boolean isGround(Block block)
public static boolean isGround(Block block)
{
{
return isSoilOrGravel(block) || isRawStone(block) || isSand(block);
return isSoilOrGravel(block) || isRawStone(block) || isSand(block);
}
}
复制
已复制
复制
已复制
public static boolean isGroundType1(Block block)
public static boolean isGroundType1(Block block)
{
{
复制
已复制
复制
已复制
return isGrassType1(block) || block == TFCBlocks.Dirt || block == TFCBlocks.Gravel || block == TFCBlocks.Sand;
return isGrassType1(block) || block == TFCBlocks.Dirt || block == TFCBlocks.Gravel || block == TFCBlocks.Sand;
}
}
public static boolean isSoilWAILA(Block block)
public static boolean isSoilWAILA(Block block)
{
{
return isDirt(block) || isGravel(block) || isSand(block) || isGrassNormal(block) || isDryGrass(block);
return isDirt(block) || isGravel(block) || isSand(block) || isGrassNormal(block) || isDryGrass(block);
}
}
public static int getSoilMetaFromStone(Block inBlock, int inMeta)
public static int getSoilMetaFromStone(Block inBlock, int inMeta)
{
{
if(inBlock == TFCBlocks.StoneIgIn)
if(inBlock == TFCBlocks.StoneIgIn)
return inMeta;
return inMeta;
if(inBlock == TFCBlocks.StoneSed)
if(inBlock == TFCBlocks.StoneSed)
return inMeta + 3;
return inMeta + 3;
if(inBlock == TFCBlocks.StoneIgEx)
if(inBlock == TFCBlocks.StoneIgEx)
return inMeta + 11;
return inMeta + 11;
if(inMeta == 0)
if(inMeta == 0)
return inMeta + 15;
return inMeta + 15;
else
else
return inMeta - 1;
return inMeta - 1;
}
}
public static int getSoilMeta(int inMeta)
public static int getSoilMeta(int inMeta)
{
{
return inMeta & 0xf;
return inMeta & 0xf;
}
}
public static int getItemMetaFromStone(Block inBlock, int inMeta)
public static int getItemMetaFromStone(Block inBlock, int inMeta)
{
{
if(inBlock == TFCBlocks.StoneIgIn)
if(inBlock == TFCBlocks.StoneIgIn)
return inMeta;
return inMeta;
if(inBlock == TFCBlocks.StoneSed)
if(inBlock == TFCBlocks.StoneSed)
return inMeta + 3;
return inMeta + 3;
if(inBlock == TFCBlocks.StoneIgEx)
if(inBlock == TFCBlocks.StoneIgEx)
return inMeta + 11;
return inMeta + 11;
if(inBlock == TFCBlocks.StoneMM)
if(inBlock == TFCBlocks.StoneMM)
return inMeta + 15;
return inMeta + 15;
else
else
return 0;
return 0;
}
}
public static Block getTypeForGrassWithRain(int inMeta, float rain)
public static Block getTypeForGrassWithRain(int inMeta, float rain)
{
{
if(rain >= 500F)
if(rain >= 500F)
return getTypeForGrass(inMeta);
return getTypeForGrass(inMeta);
else
else
return getTypeForDryGrass(inMeta);
return getTypeForDryGrass(inMeta);
}
}
public static Block getTypeForGrassWithRainByBlock(Block block, float rain)
public static Block getTypeForGrassWithRainByBlock(Block block, float rain)
{
{
if(rain >= 500F)
if(rain >= 500F)
return getTypeForGrassFromSoil(block);
return getTypeForGrassFromSoil(block);
else
else
return getTypeForDryGrassFromSoil(block);
return getTypeForDryGrassFromSoil(block);
}
}
public static Block getTypeForGrass(int inMeta)
public static Block getTypeForGrass(int inMeta)
{
{
if(inMeta < 16)
if(inMeta < 16)
return TFCBlocks.Grass;
return TFCBlocks.Grass;
else
else
return TFCBlocks.Grass2;
return TFCBlocks.Grass2;
}
}
public static Block getTypeForGrassFromDirt(Block block)
public static Block getTypeForGrassFromDirt(Block block)
{
{
if(block == TFCBlocks.Dirt)
if(block == TFCBlocks.Dirt)
return TFCBlocks.Grass;
return TFCBlocks.Grass;
else
else
return TFCBlocks.Grass2;
return TFCBlocks.Grass2;
}
}
public static Block getTypeForDryGrass(int inMeta)
public static Block getTypeForDryGrass(int inMeta)
{
{
if(inMeta < 16)
if(inMeta < 16)
return TFCBlocks.DryGrass;
return TFCBlocks.DryGrass;
else
else
return TFCBlocks.DryGrass2;
return TFCBlocks.DryGrass2;
}
}
public static Block getTypeForDryGrassFromSoil(Block block)
public static Block getTypeForDryGrassFromSoil(Block block)
{
{
if(block == TFCBlocks.Grass)
if(block == TFCBlocks.Grass)
return TFCBlocks.DryGrass;
return TFCBlocks.DryGrass;
if(block == TFCBlocks.Dirt)
if(block == TFCBlocks.Dirt)
return TFCBlocks.DryGrass;
return TFCBlocks.DryGrass;
else
else
return TFCBlocks.DryGrass2;
return TFCBlocks.DryGrass2;
}
}
public static Block getTypeForGrassFromSoil(Block block)
public static Block getTypeForGrassFromSoil(Block block)
{
{
if(block == TFCBlocks.DryGrass)
if(block == TFCBlocks.DryGrass)
return TFCBlocks.Grass;
return TFCBlocks.Grass;
if(block == TFCBlocks.DryGrass2)
if(block == TFCBlocks.DryGrass2)
return TFCBlocks.Grass2;
return TFCBlocks.Grass2;
if(block == TFCBlocks.Dirt)
if(block == TFCBlocks.Dirt)
return TFCBlocks.Grass;
return TFCBlocks.Grass;
else
else
return TFCBlocks.Grass2;
return TFCBlocks.Grass2;
}
}
public static Block getTypeForClayGrass(int inMeta)
public static Block getTypeForClayGrass(int inMeta)
{
{
if(inMeta < 16)
if(inMeta < 16)
return TFCBlocks.ClayGrass;
return TFCBlocks.ClayGrass;
else
else
return TFCBlocks.ClayGrass2;
return TFCBlocks.ClayGrass2;
}
}
复制
已复制
复制
已复制
public static Block getTypeForClayGrass(Block block)
public static Block getTypeForClayGrass(Block block)
{
{
if(isGroundType1(block))
if(isGroundType1(block))
return TFCBlocks.ClayGrass;
return TFCBlocks.ClayGrass;
else
else
return TFCBlocks.ClayGrass2;
return TFCBlocks.ClayGrass2;
}
}
复制
已复制
复制
已复制
public static Block getTypeForDirt(int inMeta)
public static Block getTypeForDirt(int inMeta)
{
{
if(inMeta < 16)
if(inMeta < 16)
return TFCBlocks.Dirt;
return TFCBlocks.Dirt;
else
else
return TFCBlocks.Dirt2;
return TFCBlocks.Dirt2;
}
}
public static Block getTypeForDirtFromGrass(Block block)
public static Block getTypeForDirtFromGrass(Block block)
{
{
if(isDirt(block))
if(isDirt(block))
return block;
return block;
if(block == TFCBlocks.Grass || block == TFCBlocks.DryGrass)
if(block == TFCBlocks.Grass || block == TFCBlocks.DryGrass)
return TFCBlocks.Dirt;
return TFCBlocks.Dirt;
else
else
return TFCBlocks.Dirt2;
return TFCBlocks.Dirt2;
}
}
public static Block getTypeForClay(int inMeta)
public static Block getTypeForClay(int inMeta)
{
{
if(inMeta < 16)
if(inMeta < 16)
return TFCBlocks.Clay;
return TFCBlocks.Clay;
else
else
return TFCBlocks.Clay2;
return TFCBlocks.Clay2;
}
}
复制
已复制
复制
已复制
public static Block getTypeForClay(Block block)
public static Block getTypeForClay(Block block)
{
{
if(isGroundType1(block))
if(isGroundType1(block))
return TFCBlocks.Clay;
return TFCBlocks.Clay;
else
else
return TFCBlocks.Clay2;
return TFCBlocks.Clay2;
}
}
复制
已复制
复制
已复制
public static Block getTypeForSand(int inMeta)
public static Block getTypeForSand(int inMeta)
{
{
if(inMeta < 16)
if(inMeta < 16)
return TFCBlocks.Sand;
return TFCBlocks.Sand;
else
else
return TFCBlocks.Sand2;
return TFCBlocks.Sand2;
}
}
public static Block getTypeForGravel(int inMeta)
public static Block getTypeForGravel(int inMeta)
{
{
if(inMeta < 16)
if(inMeta < 16)
return TFCBlocks.Gravel;
return TFCBlocks.Gravel;
else
else
return TFCBlocks.Gravel2;
return TFCBlocks.Gravel2;
}
}
public static int getRockLayerFromHeight(World world, int x, int y, int z)
public static int getRockLayerFromHeight(World world, int x, int y, int z)
{
{
ChunkData cd = getCDM(world).getData(x >> 4, z >> 4);
ChunkData cd = getCDM(world).getData(x >> 4, z >> 4);
if(cd != null)
if(cd != null)
{
{
int hm[] = cd.heightmap;
int hm[] = cd.heightmap;
int localX = x & 0xf;
int localX = x & 0xf;
int localZ = z & 0xf;
int localZ = z & 0xf;
int localY = localX + localZ * 16;
int localY = localX + localZ * 16;
if(y <= TFCOptions.RockLayer3Height + hm[localY])
if(y <= TFCOptions.RockLayer3Height + hm[localY])
return 2;
return 2;
return y > TFCOptions.RockLayer2Height + hm[localY] ? 0 : 1;
return y > TFCOptions.RockLayer2Height + hm[localY] ? 0 : 1;
} else
} else
{
{
return 0;
return 0;
}
}
}
}
public static boolean convertGrassToDirt(World world, int i, int j, int k)
public static boolean convertGrassToDirt(World world, int i, int j, int k)
{
{
Block block = world.func_147439_a(i, j, k);
Block block = world.func_147439_a(i, j, k);
int meta = world.func_72805_g(i, j, k);
int meta = world.func_72805_g(i, j, k);
if(isGrass(block))
if(isGrass(block))
{
{
if(isGrassType1(block))
if(isGrassType1(block))
{
{
world.func_147465_d(i, j, k, TFCBlocks.Dirt, meta, 2);
world.func_147465_d(i, j, k, TFCBlocks.Dirt, meta, 2);
return true;
return true;
}
}
if(isGrassType2(block))
if(isGrassType2(block))
{
{
world.func_147465_d(i, j, k, TFCBlocks.Dirt2, meta, 2);
world.func_147465_d(i, j, k, TFCBlocks.Dirt2, meta, 2);
return true;
return true;
}
}
}
}
return false;
return false;
}
}
public static EnumFuelMaterial getFuelMaterial(ItemStack is)
public static EnumFuelMaterial getFuelMaterial(ItemStack is)
{
{
if(is.func_77973_b() == Item.func_150898_a(TFCBlocks.Peat))
if(is.func_77973_b() == Item.func_150898_a(TFCBlocks.Peat))
return EnumFuelMaterial.PEAT;
return EnumFuelMaterial.PEAT;
if(is.func_77973_b() == TFCItems.Coal && is.func_77960_j() == 0)
if(is.func_77973_b() == TFCItems.Coal && is.func_77960_j() == 0)
return EnumFuelMaterial.COAL;
return EnumFuelMaterial.COAL;
if(is.func_77973_b() == TFCItems.Coal && is.func_77960_j() == 1)
if(is.func_77973_b() == TFCItems.Coal && is.func_77960_j() == 1)
return EnumFuelMaterial.CHARCOAL;
return EnumFuelMaterial.CHARCOAL;
if(is.func_77960_j() == 0)
if(is.func_77960_j() == 0)
return EnumFuelMaterial.ASH;
return EnumFuelMaterial.ASH;
if(is.func_77960_j() == 1)
if(is.func_77960_j() == 1)
return EnumFuelMaterial.ASPEN;
return EnumFuelMaterial.ASPEN;
if(is.func_77960_j() == 2)
if(is.func_77960_j() == 2)
return EnumFuelMaterial.BIRCH;
return EnumFuelMaterial.BIRCH;
if(is.func_77960_j() == 3)
if(is.func_77960_j() == 3)
return EnumFuelMaterial.CHESTNUT;
return EnumFuelMaterial.CHESTNUT;
if(is.func_77960_j() == 4)
if(is.func_77960_j() == 4)
return EnumFuelMaterial.DOUGLASFIR;
return EnumFuelMaterial.DOUGLASFIR;
if(is.func_77960_j() == 5)
if(is.func_77960_j() == 5)
return EnumFuelMaterial.HICKORY;
return EnumFuelMaterial.HICKORY;
if(is.func_77960_j() == 6)
if(is.func_77960_j() == 6)
return EnumFuelMaterial.MAPLE;
return EnumFuelMaterial.MAPLE;
if(is.func_77960_j() == 7)
if(is.func_77960_j() == 7)
return EnumFuelMaterial.OAK;
return EnumFuelMaterial.OAK;
if(is.func_77960_j() == 8)
if(is.func_77960_j() == 8)
return EnumFuelMaterial.PINE;
return EnumFuelMaterial.PINE;
if(is.func_77960_j() == 9)
if(is.func_77960_j() == 9)
return EnumFuelMaterial.REDWOOD;
return EnumFuelMaterial.REDWOOD;
if(is.func_77960_j() == 10)
if(is.func_77960_j() == 10)
return EnumFuelMaterial.SPRUCE;
return EnumFuelMaterial.SPRUCE;
if(is.func_77960_j() == 11)
if(is.func_77960_j() == 11)
复制
已复制
复制
已复制
return EnumFuelMaterial.SYCAMORE;
if(is.func_77960_j() == 12)
return EnumFuelMaterial.WHITECEDAR;
已保存差异
原始文本
打开文件
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: TFC_Core.java package com.bioxx.tfc.Core; import com.bioxx.tfc.Blocks.BlockSlab; import com.bioxx.tfc.Chunkdata.ChunkData; import com.bioxx.tfc.Chunkdata.ChunkDataManager; import com.bioxx.tfc.CommonProxy; import com.bioxx.tfc.Core.Player.BodyTempStats; import com.bioxx.tfc.Core.Player.FoodStatsTFC; import com.bioxx.tfc.Core.Player.InventoryPlayerTFC; import com.bioxx.tfc.Core.Player.SkillStats; import com.bioxx.tfc.Food.ItemFoodTFC; import com.bioxx.tfc.Items.ItemBlocks.ItemTerraBlock; import com.bioxx.tfc.Items.ItemOre; import com.bioxx.tfc.Items.ItemTerra; import com.bioxx.tfc.TerraFirmaCraft; import com.bioxx.tfc.TileEntities.TEMetalSheet; import com.bioxx.tfc.TileEntities.TEPartial; import com.bioxx.tfc.WorldGen.TFCBiome; import com.bioxx.tfc.WorldGen.WorldCacheManager; import com.bioxx.tfc.api.Constant.Global; import com.bioxx.tfc.api.Entities.IAnimal; import com.bioxx.tfc.api.Enums.EnumFuelMaterial; import com.bioxx.tfc.api.Food; import com.bioxx.tfc.api.Interfaces.IFood; import com.bioxx.tfc.api.*; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import java.nio.ByteBuffer; import java.util.*; import net.minecraft.block.Block; import net.minecraft.block.BlockFire; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.*; import net.minecraft.entity.ai.attributes.IAttributeInstance; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.*; import net.minecraft.world.*; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.storage.WorldInfo; import net.minecraftforge.common.util.ForgeDirection; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; // Referenced classes of package com.bioxx.tfc.Core: // Recipes, TFC_Time, TFC_Climate public class TFC_Core { public TFC_Core() { } public static ChunkDataManager getCDM(World world) { int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g; return (ChunkDataManager)cdmMap.get(Integer.valueOf(key)); } public static ChunkDataManager addCDM(World world) { int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g; if(!cdmMap.containsKey(Integer.valueOf(key))) return (ChunkDataManager)cdmMap.put(Integer.valueOf(key), new ChunkDataManager(world)); else return (ChunkDataManager)cdmMap.get(Integer.valueOf(key)); } public static ChunkDataManager removeCDM(World world) { int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g; return (ChunkDataManager)cdmMap.remove(Integer.valueOf(key)); } public static int getMouseX() { ScaledResolution scaledresolution = new ScaledResolution(Minecraft.func_71410_x(), Minecraft.func_71410_x().field_71443_c, Minecraft.func_71410_x().field_71440_d); int i = scaledresolution.func_78326_a(); int k = (Mouse.getX() * i) / Minecraft.func_71410_x().field_71443_c; return k; } public static int getMouseY() { ScaledResolution scaledresolution = new ScaledResolution(Minecraft.func_71410_x(), Minecraft.func_71410_x().field_71443_c, Minecraft.func_71410_x().field_71440_d); int j = scaledresolution.func_78328_b(); int l = j - (Mouse.getY() * j) / Minecraft.func_71410_x().field_71440_d - 1; return l; } static Boolean isBlockAboveSolid(IBlockAccess blockAccess, int i, int j, int k) { if(TerraFirmaCraft.proxy.getCurrentWorld().func_147439_a(i, j + 1, k).func_149662_c()) return Boolean.valueOf(true); else return Boolean.valueOf(false); } public static int getExtraEquipInventorySize() { return 1; } public static InventoryPlayer getNewInventory(EntityPlayer player) { InventoryPlayer ip = player.field_71071_by; NBTTagList nbt = new NBTTagList(); nbt = player.field_71071_by.func_70442_a(nbt); ip = new InventoryPlayerTFC(player); ip.func_70443_b(nbt); return ip; } public static ItemStack RandomGem(Random random, int rockType) { ItemStack is = null; if(random.nextInt(500) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 0)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 0)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 0)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 0)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 0)); items.add(new ItemStack(TFCItems.GemJade, 1, 0)); items.add(new ItemStack(TFCItems.GemJasper, 1, 0)); items.add(new ItemStack(TFCItems.GemOpal, 1, 0)); items.add(new ItemStack(TFCItems.GemRuby, 1, 0)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 0)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 0)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 0)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } else if(random.nextInt(1000) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 1)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 1)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 1)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 1)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 1)); items.add(new ItemStack(TFCItems.GemJade, 1, 1)); items.add(new ItemStack(TFCItems.GemJasper, 1, 1)); items.add(new ItemStack(TFCItems.GemOpal, 1, 1)); items.add(new ItemStack(TFCItems.GemRuby, 1, 1)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 1)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 1)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 1)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } else if(random.nextInt(2000) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 2)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 2)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 2)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 2)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 2)); items.add(new ItemStack(TFCItems.GemJade, 1, 2)); items.add(new ItemStack(TFCItems.GemJasper, 1, 2)); items.add(new ItemStack(TFCItems.GemOpal, 1, 2)); items.add(new ItemStack(TFCItems.GemRuby, 1, 2)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 2)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 2)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 2)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } else if(random.nextInt(4000) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 3)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 3)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 3)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 3)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 3)); items.add(new ItemStack(TFCItems.GemJade, 1, 3)); items.add(new ItemStack(TFCItems.GemJasper, 1, 3)); items.add(new ItemStack(TFCItems.GemOpal, 1, 3)); items.add(new ItemStack(TFCItems.GemRuby, 1, 3)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 3)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 3)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 3)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } else if(random.nextInt(8000) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 4)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 4)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 4)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 4)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 4)); items.add(new ItemStack(TFCItems.GemJade, 1, 4)); items.add(new ItemStack(TFCItems.GemJasper, 1, 4)); items.add(new ItemStack(TFCItems.GemOpal, 1, 4)); items.add(new ItemStack(TFCItems.GemRuby, 1, 4)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 4)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 4)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 4)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } return is; } public static void SurroundWithLeaves(World world, int i, int j, int k, int meta, Random R) { for(int y = 2; y >= -2; y--) { for(int x = 2; x >= -2; x--) { for(int z = 2; z >= -2; z--) if(world.func_147437_c(i + x, j + y, k + z)) world.func_147465_d(i + x, j + y, k + z, TFCBlocks.Leaves, meta, 2); } } } public static void SetupWorld(World world) { long seed = world.func_72905_C(); Random R = new Random(seed); world.field_73011_w.func_76558_a(world); Recipes.registerAnvilRecipes(R, world); } public static void SetupWorld(World w, long seed) { try { ReflectionHelper.setPrivateValue(net/minecraft/world/storage/WorldInfo, w.func_72912_H(), Long.valueOf(seed), 0); SetupWorld(w); } catch(Exception exception) { } } public static boolean isRawStone(World world, int x, int y, int z) { Block block = world.func_147439_a(x, y, z); return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneSed || block == TFCBlocks.StoneMM; } public static boolean isSmoothStone(World world, int x, int y, int z) { Block block = world.func_147439_a(x, y, z); return block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneMMSmooth; } public static boolean isSmoothStone(Block block) { return block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneMMSmooth; } public static boolean isBrickStone(Block block) { return block == TFCBlocks.StoneIgExBrick || block == TFCBlocks.StoneIgInBrick || block == TFCBlocks.StoneSedBrick || block == TFCBlocks.StoneMMBrick; } public static boolean isRawStone(Block block) { return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneSed || block == TFCBlocks.StoneMM; } public static boolean isOreStone(Block block) { return block == TFCBlocks.Ore || block == TFCBlocks.Ore2 || block == TFCBlocks.Ore3; } public static boolean isNaturalStone(Block block) { return isRawStone(block) || isOreStone(block); } public static boolean isCobbleStone(Block block) { return block == TFCBlocks.StoneIgExCobble || block == TFCBlocks.StoneIgInCobble || block == TFCBlocks.StoneSedCobble || block == TFCBlocks.StoneMMCobble; } public static boolean isStoneIgEx(Block block) { return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgExCobble || block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgExBrick || block == TFCBlocks.WallRawIgEx || block == TFCBlocks.WallCobbleIgEx || block == TFCBlocks.WallBrickIgEx || block == TFCBlocks.WallSmoothIgEx; } public static boolean isStoneIgIn(Block block) { return block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneIgInCobble || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneIgInBrick || block == TFCBlocks.WallRawIgIn || block == TFCBlocks.WallCobbleIgIn || block == TFCBlocks.WallBrickIgIn || block == TFCBlocks.WallSmoothIgIn; } public static boolean isStoneSed(Block block) { return block == TFCBlocks.StoneSed || block == TFCBlocks.StoneSedCobble || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneSedBrick || block == TFCBlocks.WallRawSed || block == TFCBlocks.WallCobbleSed || block == TFCBlocks.WallBrickSed || block == TFCBlocks.WallSmoothSed; } public static boolean isStoneMM(Block block) { return block == TFCBlocks.StoneMM || block == TFCBlocks.StoneMMCobble || block == TFCBlocks.StoneMMSmooth || block == TFCBlocks.StoneMMBrick || block == TFCBlocks.WallRawMM || block == TFCBlocks.WallCobbleMM || block == TFCBlocks.WallBrickMM || block == TFCBlocks.WallSmoothMM; } public static boolean isDirt(Block block) { return block == TFCBlocks.Dirt || block == TFCBlocks.Dirt2; } public static boolean isFarmland(Block block) { return block == TFCBlocks.tilledSoil || block == TFCBlocks.tilledSoil2; } public static boolean isGrass(Block block) { return block == TFCBlocks.Grass || block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.PeatGrass || block == TFCBlocks.DryGrass || block == TFCBlocks.DryGrass2; } public static boolean isGrassNormal(Block block) { return block == TFCBlocks.Grass || block == TFCBlocks.Grass2; } public static boolean isLushGrass(Block block) { return block == TFCBlocks.Grass || block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.PeatGrass; } public static boolean isClayGrass(Block block) { return block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2; } public static boolean isPeatGrass(Block block) { return block == TFCBlocks.PeatGrass; } public static boolean isDryGrass(Block block) { return block == TFCBlocks.DryGrass || block == TFCBlocks.DryGrass2; } public static boolean isGrassType1(Block block) { return block == TFCBlocks.Grass || block == TFCBlocks.ClayGrass || block == TFCBlocks.DryGrass; } public static boolean isGrassType2(Block block) { return block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.DryGrass2; } public static boolean isClay(Block block) { return block == TFCBlocks.Clay || block == TFCBlocks.Clay2; } public static boolean isSand(Block block) { return block == TFCBlocks.Sand || block == TFCBlocks.Sand2; } public static boolean isPeat(Block block) { return block == TFCBlocks.Peat; } public static boolean isHotWater(Block block) { return block == TFCBlocks.HotWater || block == TFCBlocks.HotWaterStationary; } public static boolean isWater(Block block) { return isSaltWater(block) || isFreshWater(block); } public static boolean isWaterFlowing(Block block) { return block == TFCBlocks.SaltWater || block == TFCBlocks.FreshWater; } public static boolean isSaltWater(Block block) { return block == TFCBlocks.SaltWater || block == TFCBlocks.SaltWaterStationary; } public static boolean isSaltWaterIncludeIce(Block block, int meta, Material mat) { return block == TFCBlocks.SaltWater || block == TFCBlocks.SaltWaterStationary || mat == Material.field_151588_w && meta == 0; } public static boolean isFreshWater(Block block) { return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary; } public static boolean isFreshWaterIncludeIce(Block block, int meta) { return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary || block == TFCBlocks.Ice && meta != 0; } public static boolean isFreshWaterIncludeIce(Block block, int meta, Material mat) { return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary || mat == Material.field_151588_w && meta != 0; } public static boolean isSoil(Block block) { return isGrass(block) || isDirt(block) || isClay(block) || isPeat(block); } public static boolean isSoilOrGravel(Block block) { return isGrass(block) || isDirt(block) || isClay(block) || isPeat(block) || isGravel(block); } public static boolean isGravel(Block block) { return block == TFCBlocks.Gravel || block == TFCBlocks.Gravel2; } public static boolean isGround(Block block) { return isSoilOrGravel(block) || isRawStone(block) || isSand(block); } public static boolean isGroundType1(Block block) { return isGrassType1(block) || block == TFCBlocks.Dirt || block == TFCBlocks.Gravel || block == TFCBlocks.Sand; } public static boolean isSoilWAILA(Block block) { return isDirt(block) || isGravel(block) || isSand(block) || isGrassNormal(block) || isDryGrass(block); } public static int getSoilMetaFromStone(Block inBlock, int inMeta) { if(inBlock == TFCBlocks.StoneIgIn) return inMeta; if(inBlock == TFCBlocks.StoneSed) return inMeta + 3; if(inBlock == TFCBlocks.StoneIgEx) return inMeta + 11; if(inMeta == 0) return inMeta + 15; else return inMeta - 1; } public static int getSoilMeta(int inMeta) { return inMeta & 0xf; } public static int getItemMetaFromStone(Block inBlock, int inMeta) { if(inBlock == TFCBlocks.StoneIgIn) return inMeta; if(inBlock == TFCBlocks.StoneSed) return inMeta + 3; if(inBlock == TFCBlocks.StoneIgEx) return inMeta + 11; if(inBlock == TFCBlocks.StoneMM) return inMeta + 15; else return 0; } public static Block getTypeForGrassWithRain(int inMeta, float rain) { if(rain >= 500F) return getTypeForGrass(inMeta); else return getTypeForDryGrass(inMeta); } public static Block getTypeForGrassWithRainByBlock(Block block, float rain) { if(rain >= 500F) return getTypeForGrassFromSoil(block); else return getTypeForDryGrassFromSoil(block); } public static Block getTypeForGrass(int inMeta) { if(inMeta < 16) return TFCBlocks.Grass; else return TFCBlocks.Grass2; } public static Block getTypeForGrassFromDirt(Block block) { if(block == TFCBlocks.Dirt) return TFCBlocks.Grass; else return TFCBlocks.Grass2; } public static Block getTypeForDryGrass(int inMeta) { if(inMeta < 16) return TFCBlocks.DryGrass; else return TFCBlocks.DryGrass2; } public static Block getTypeForDryGrassFromSoil(Block block) { if(block == TFCBlocks.Grass) return TFCBlocks.DryGrass; if(block == TFCBlocks.Dirt) return TFCBlocks.DryGrass; else return TFCBlocks.DryGrass2; } public static Block getTypeForGrassFromSoil(Block block) { if(block == TFCBlocks.DryGrass) return TFCBlocks.Grass; if(block == TFCBlocks.DryGrass2) return TFCBlocks.Grass2; if(block == TFCBlocks.Dirt) return TFCBlocks.Grass; else return TFCBlocks.Grass2; } public static Block getTypeForClayGrass(int inMeta) { if(inMeta < 16) return TFCBlocks.ClayGrass; else return TFCBlocks.ClayGrass2; } public static Block getTypeForClayGrass(Block block) { if(isGroundType1(block)) return TFCBlocks.ClayGrass; else return TFCBlocks.ClayGrass2; } public static Block getTypeForDirt(int inMeta) { if(inMeta < 16) return TFCBlocks.Dirt; else return TFCBlocks.Dirt2; } public static Block getTypeForDirtFromGrass(Block block) { if(isDirt(block)) return block; if(block == TFCBlocks.Grass || block == TFCBlocks.DryGrass) return TFCBlocks.Dirt; else return TFCBlocks.Dirt2; } public static Block getTypeForClay(int inMeta) { if(inMeta < 16) return TFCBlocks.Clay; else return TFCBlocks.Clay2; } public static Block getTypeForClay(Block block) { if(isGroundType1(block)) return TFCBlocks.Clay; else return TFCBlocks.Clay2; } public static Block getTypeForSand(int inMeta) { if(inMeta < 16) return TFCBlocks.Sand; else return TFCBlocks.Sand2; } public static Block getTypeForGravel(int inMeta) { if(inMeta < 16) return TFCBlocks.Gravel; else return TFCBlocks.Gravel2; } public static int getRockLayerFromHeight(World world, int x, int y, int z) { ChunkData cd = getCDM(world).getData(x >> 4, z >> 4); if(cd != null) { int hm[] = cd.heightmap; int localX = x & 0xf; int localZ = z & 0xf; int localY = localX + localZ * 16; if(y <= TFCOptions.RockLayer3Height + hm[localY]) return 2; return y > TFCOptions.RockLayer2Height + hm[localY] ? 0 : 1; } else { return 0; } } public static boolean convertGrassToDirt(World world, int i, int j, int k) { Block block = world.func_147439_a(i, j, k); int meta = world.func_72805_g(i, j, k); if(isGrass(block)) { if(isGrassType1(block)) { world.func_147465_d(i, j, k, TFCBlocks.Dirt, meta, 2); return true; } if(isGrassType2(block)) { world.func_147465_d(i, j, k, TFCBlocks.Dirt2, meta, 2); return true; } } return false; } public static EnumFuelMaterial getFuelMaterial(ItemStack is) { if(is.func_77973_b() == Item.func_150898_a(TFCBlocks.Peat)) return EnumFuelMaterial.PEAT; if(is.func_77973_b() == TFCItems.Coal && is.func_77960_j() == 0) return EnumFuelMaterial.COAL; if(is.func_77973_b() == TFCItems.Coal && is.func_77960_j() == 1) return EnumFuelMaterial.CHARCOAL; if(is.func_77960_j() == 0) return EnumFuelMaterial.ASH; if(is.func_77960_j() == 1) return EnumFuelMaterial.ASPEN; if(is.func_77960_j() == 2) return EnumFuelMaterial.BIRCH; if(is.func_77960_j() == 3) return EnumFuelMaterial.CHESTNUT; if(is.func_77960_j() == 4) return EnumFuelMaterial.DOUGLASFIR; if(is.func_77960_j() == 5) return EnumFuelMaterial.HICKORY; if(is.func_77960_j() == 6) return EnumFuelMaterial.MAPLE; if(is.func_77960_j() == 7) return EnumFuelMaterial.OAK; if(is.func_77960_j() == 8) return EnumFuelMaterial.PINE; if(is.func_77960_j() == 9) return EnumFuelMaterial.REDWOOD; if(is.func_77960_j() == 10) return EnumFuelMaterial.SPRUCE; if(is.func_77960_j() == 11) return EnumFuelMaterial.SYCAMORE; if(is.func_77960_j() == 12) return EnumFuelMaterial.WHITECEDAR; if(is.func_77960_j() == 13) return EnumFuelMaterial.WHITEELM; if(is.func_77960_j() == 14) return EnumFuelMaterial.WILLOW; if(is.func_77960_j() == 15) return EnumFuelMaterial.KAPOK; if(is.func_77960_j() == 16) return EnumFuelMaterial.ACACIA; else return EnumFuelMaterial.ASPEN; } public static boolean showShiftInformation() { return FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT && Keyboard.isKeyDown(42); } public static boolean showCtrlInformation() { return FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT && Keyboard.isKeyDown(29); } public static FoodStatsTFC getPlayerFoodStats(EntityPlayer player) { FoodStatsTFC foodstats = new FoodStatsTFC(player); foodstats.readNBT(player.getEntityData()); return foodstats; } public static void setPlayerFoodStats(EntityPlayer player, FoodStatsTFC foodstats) { foodstats.writeNBT(player.getEntityData()); } public static BodyTempStats getBodyTempStats(EntityPlayer player) { BodyTempStats body = new BodyTempStats(); body.readNBT(player.getEntityData()); return body; } public static void setBodyTempStats(EntityPlayer player, BodyTempStats tempStats) { tempStats.writeNBT(player.getEntityData()); } public static SkillStats getSkillStats(EntityPlayer player) { SkillStats skills = new SkillStats(player); skills.readNBT(player.getEntityData()); return skills; } public static void setSkillStats(EntityPlayer player, SkillStats skills) { skills.writeNBT(player.getEntityData()); } public static boolean isTopFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getTopChiselLevel(te.extraData) == 0; } if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.TopExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.UP); } public static boolean isBottomFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getBottomChiselLevel(te.extraData) == 0; } if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.BottomExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.DOWN); } public static boolean isNorthFaceSolid(World world, int x, int y, int z) { Block bid = world.func_147439_a(x, y, z); if(bid.func_149721_r()) return true; if(bid == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getNorthChiselLevel(te.extraData) == 0; } if(bid == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.NorthExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.NORTH); } public static boolean isSouthFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getSouthChiselLevel(te.extraData) == 0; } if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.SouthExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.SOUTH); } public static boolean isEastFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); if(BlockSlab.getEastChiselLevel(te.extraData) != 0) return true; } else if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.EastExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.EAST); } public static boolean isWestFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getWestChiselLevel(te.extraData) == 0; } if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.WestExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.WEST); } public static boolean isOreIron(ItemStack is) { return (is.func_77973_b() instanceof ItemOre) && ((ItemOre)is.func_77973_b()).GetMetalType(is) == Global.PIGIRON; } public static float getEntityMaxHealth(EntityLivingBase entity) { return (float)entity.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111126_e(); } public static float getPercentGrown(IAnimal animal) { float birth = animal.getBirthDay(); float time = TFC_Time.getTotalDays(); float percent = (time - birth) / (float)animal.getNumberOfDaysToAdult(); return Math.min(percent, 1.0F); } public static void bindTexture(ResourceLocation texture) { Minecraft.func_71410_x().func_110434_K().func_110577_a(texture); } public static boolean isPlayerInDebugMode(EntityPlayer player) { return TFCOptions.enableDebugMode; } public static void addPlayerExhaustion(EntityPlayer player, float exhaustion) { FoodStatsTFC foodstats = getPlayerFoodStats(player); foodstats.addFoodExhaustion(exhaustion); foodstats.addWaterExhaustion(exhaustion); setPlayerFoodStats(player, foodstats); } public static float getEnvironmentalDecay(float temp) { if(temp > 0.0F) { float tempFactor = 1.0F - 15F / (15F + temp); return tempFactor * 2.0F; } else { return 0.0F; } } public static void handleItemTicking(IInventory iinv, World world, int x, int y, int z) { handleItemTicking(iinv, world, x, y, z, 1.0F); } public static void handleItemTicking(ItemStack iinv[], World world, int x, int y, int z) { handleItemTicking(iinv, world, x, y, z, 1.0F); } public static void handleItemTicking(IInventory iinv, World world, int x, int y, int z, float environmentalDecayFactor) { for(int i = 0; !world.field_72995_K && i < iinv.func_70302_i_(); i++) { ItemStack is = iinv.func_70301_a(i); if(is != null && iinv.func_70301_a(i).field_77994_a <= 0) iinv.func_70299_a(i, null); if(is == null) continue; if(is.field_77994_a == 0) { iinv.func_70299_a(i, null); continue; } if((is.func_77973_b() instanceof ItemTerra) && ((ItemTerra)is.func_77973_b()).onUpdate(is, world, x, y, z) || (is.func_77973_b() instanceof ItemTerraBlock) && ((ItemTerraBlock)is.func_77973_b()).onUpdate(is, world, x, y, z)) continue; is = tickDecay(is, world, x, y, z, environmentalDecayFactor, 1.0F); if(is != null) TFC_ItemHeat.HandleItemHeat(is); iinv.func_70299_a(i, is); } } public static byte getByteFromSmallFloat(float f) { MathHelper.func_76131_a(f, 0.5F, 1.5F); return (byte)(Float.floatToIntBits(f) >> 16 & 0xff); } public static float getSmallFloatFromByte(byte b) { return ByteBuffer.wrap(new byte[] { 63, b, 0, 0 }).getFloat(); } public static void handleItemTicking(IInventory iinv, World world, int x, int y, int z, float environmentalDecayFactor, float baseDecayMod) { for(int i = 0; !world.field_72995_K && i < iinv.func_70302_i_(); i++) { ItemStack is = iinv.func_70301_a(i); if(is != null && iinv.func_70301_a(i).field_77994_a <= 0) iinv.func_70299_a(i, null); if(is == null || (is.func_77973_b() instanceof ItemTerra) && ((ItemTerra)is.func_77973_b()).onUpdate(is, world, x, y, z) || (is.func_77973_b() instanceof ItemTerraBlock) && ((ItemTerraBlock)is.func_77973_b()).onUpdate(is, world, x, y, z)) continue; is = tickDecay(is, world, x, y, z, environmentalDecayFactor, baseDecayMod); if(is != null) TFC_ItemHeat.HandleItemHeat(is); iinv.func_70299_a(i, is); } } public static void handleItemTicking(ItemStack iinv[], World world, int x, int y, int z, float environmentalDecayFactor) { for(int i = 0; !world.field_72995_K && i < iinv.length; i++) { ItemStack is = iinv[i]; if(is != null && iinv[i].field_77994_a <= 0) iinv[i] = null; if(is == null || (is.func_77973_b() instanceof ItemTerra) && ((ItemTerra)is.func_77973_b()).onUpdate(is, world, x, y, z) || (is.func_77973_b() instanceof ItemTerraBlock) && ((ItemTerraBlock)is.func_77973_b()).onUpdate(is, world, x, y, z)) continue; is = tickDecay(is, world, x, y, z, environmentalDecayFactor, 1.0F); if(is != null) TFC_ItemHeat.HandleItemHeat(is); iinv[i] = is; } } private static ItemStack tickDecay(ItemStack is, World world, int x, int y, int z, float environmentalDecayFactor, float baseDecayMod) { NBTTagCompound nbt = is.func_77978_p(); if(nbt == null || !nbt.func_74764_b("foodWeight") || !nbt.func_74764_b("foodDecay")) return is; if((long)nbt.func_74762_e("decayTimer") < TFC_Time.getTotalHours()) { int timeDiff = (int)(TFC_Time.getTotalHours() - (long)nbt.func_74762_e("decayTimer")); float protMult = 1.0F; if(TFCOptions.useDecayProtection) if(timeDiff > TFCOptions.decayProtectionDays * 24) nbt.func_74768_a("decayTimer", (int)TFC_Time.getTotalHours() - 24); else if(timeDiff > 24) protMult = 1 - timeDiff / (TFCOptions.decayProtectionDays * 24); float decay = nbt.func_74760_g("foodDecay"); float thisDecayRate = 1.0F; if(is.func_77973_b() instanceof IFood) thisDecayRate = ((IFood)is.func_77973_b()).getDecayRate(is); if(nbt.func_74764_b("decayRate")) thisDecayRate = nbt.func_74760_g("decayRate"); float temp = getCachedTemp(world, x, y, z, nbt.func_74762_e("decayTimer")); float environmentalDecay = getEnvironmentalDecay(temp) * environmentalDecayFactor; if(decay < 0.0F) { float d = 1.0F * (thisDecayRate * baseDecayMod * environmentalDecay); if(decay + d < 0.0F) decay += d; else decay = 0.0F; } else if(decay == 0.0F) { decay = nbt.func_74760_g("foodWeight") * (world.field_73012_v.nextFloat() * 0.005F) * TFCOptions.decayMultiplier; } else { double fdr = Global.FOOD_DECAY_RATE - 1.0D; fdr *= thisDecayRate * baseDecayMod * environmentalDecay * protMult * TFCOptions.decayMultiplier; decay = (float)((double)decay * (1.0D + fdr)); } nbt.func_74768_a("decayTimer", nbt.func_74762_e("decayTimer") + 1); nbt.func_74776_a("foodDecay", decay); } if(nbt.func_74760_g("foodDecay") / nbt.func_74760_g("foodWeight") > 0.9F) { if(is.func_77973_b() instanceof IFood) is = ((IFood)is.func_77973_b()).onDecayed(is, world, x, y, z); else is.field_77994_a = 0; } else { is.func_77982_d(nbt); } return is; } public static float getCachedTemp(World world, int x, int y, int z, int th) { float cacheTemp = TFC_Climate.getCacheManager(world).getTemp(x, z, th); if(cacheTemp != 1.401298E-45F) { return cacheTemp; } else { float temp = TFC_Climate.getHeightAdjustedTempSpecificDay(world, TFC_Time.getDayFromTotalHours(th), TFC_Time.getHourOfDayFromTotalHours(th), x, y, z); addCachedTemp(world, x, z, th, temp); return temp; } } public static void addCachedTemp(World world, int x, int z, int th, float temp) { TFC_Climate.getCacheManager(world).addTemp(x, z, th, temp); } public static void animalDropMeat(Entity e, Item i, float foodWeight) { ItemStack is = ItemFoodTFC.createTag(new ItemStack(i, 1), foodWeight); Random r = new Random(e.func_110124_au().getLeastSignificantBits() + e.func_110124_au().getMostSignificantBits()); Food.adjustFlavor(is, r); e.capturedDrops.add(new EntityItem(e.field_70170_p, e.field_70165_t, e.field_70163_u, e.field_70161_v, is)); } public static Vec3 getEntityPos(Entity e) { return Vec3.func_72443_a(e.field_70165_t, e.field_70163_u, e.field_70161_v); } public static void giveItemToPlayer(ItemStack is, EntityPlayer player) { if(player.field_70170_p.field_72995_K) { return; } else { EntityItem ei = player.func_70099_a(is, 1.0F); ei.field_145804_b = 0; return; } } public static boolean isFence(Block b) { return b == TFCBlocks.Fence || b == TFCBlocks.Fence2; } public static boolean isVertSupport(Block b) { return b == TFCBlocks.WoodSupportV || b == TFCBlocks.WoodSupportV2; } public static boolean isHorizSupport(Block b) { return b == TFCBlocks.WoodSupportH || b == TFCBlocks.WoodSupportH2; } public static boolean isOceanicBiome(int id) { return id == TFCBiome.ocean.field_76756_M || id == TFCBiome.DeepOcean.field_76756_M; } public static boolean isMountainBiome(int id) { return id == TFCBiome.Mountains.field_76756_M || id == TFCBiome.MountainsEdge.field_76756_M; } public static boolean isBeachBiome(int id) { return id == TFCBiome.beach.field_76756_M || id == TFCBiome.gravelbeach.field_76756_M; } public static boolean isValidCharcoalPitCover(Block block) { if(Blocks.field_150480_ab.getFlammability(block) > 0 && block != TFCBlocks.LogPile) return false; else return block == TFCBlocks.LogPile || isCobbleStone(block) || isBrickStone(block) || isSmoothStone(block) || isGround(block) || block == Blocks.field_150359_w || block == Blocks.field_150399_cn || block == TFCBlocks.MetalTrapDoor || block == Blocks.field_150454_av || block.func_149662_c(); } public static void writeInventoryToNBT(NBTTagCompound nbt, ItemStack storage[]) { writeInventoryToNBT(nbt, storage, "Items"); } public static void writeInventoryToNBT(NBTTagCompound nbt, ItemStack storage[], String name) { NBTTagList nbttaglist = new NBTTagList(); for(int i = 0; i < storage.length; i++) if(storage[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.func_74774_a("Slot", (byte)i); storage[i].func_77955_b(nbttagcompound1); nbttaglist.func_74742_a(nbttagcompound1); } nbt.func_74782_a(name, nbttaglist); } public static void readInventoryFromNBT(NBTTagCompound nbt, ItemStack storage[]) { readInventoryFromNBT(nbt, storage, "Items"); } public static void readInventoryFromNBT(NBTTagCompound nbt, ItemStack storage[], String name) { NBTTagList nbttaglist = nbt.func_150295_c(name, 10); for(int i = 0; i < nbttaglist.func_74745_c(); i++) { NBTTagCompound nbttagcompound1 = nbttaglist.func_150305_b(i); byte byte0 = nbttagcompound1.func_74771_c("Slot"); if(byte0 >= 0 && byte0 < storage.length) storage[byte0] = ItemStack.func_77949_a(nbttagcompound1); } } public static ItemStack getItemInInventory(Item item, IInventory iinv) { for(int i = 0; i < iinv.func_70302_i_(); i++) { iinv.func_70301_a(i); if(iinv.func_70301_a(i) != null && iinv.func_70301_a(i).func_77973_b() == item) return iinv.func_70301_a(i); } return null; } public static void DestroyBlock(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z) != Blocks.field_150350_a) { world.func_147439_a(x, y, z).func_149697_b(world, x, y, z, world.func_72805_g(x, y, z), 0); world.func_147468_f(x, y, z); } } public static boolean areItemsEqual(ItemStack is1, ItemStack is2) { Item i1 = null; int d1 = 0; Item i2 = null; int d2 = 0; if(is1 != null) { i1 = is1.func_77973_b(); d1 = is1.func_77960_j(); } if(is2 != null) { i2 = is2.func_77973_b(); d2 = is2.func_77960_j(); } return i1 == i2 && d1 == d2; } public static boolean setBlockWithDrops(World world, int x, int y, int z, Block b, int meta) { Block block = world.func_147439_a(x, y, z); if(block.func_149688_o() != Material.field_151579_a) { int l = world.func_72805_g(x, y, z); world.func_72926_e(2001, x, y, z, Block.func_149682_b(block) + (l << 12)); block.func_149697_b(world, x, y, z, l, 0); } return world.func_147465_d(x, y, z, b, meta, 3); } public static boolean setBlockToAirWithDrops(World world, int x, int y, int z) { return world.func_147480_a(x, y, z, true); } public static boolean isWaterBiome(BiomeGenBase b) { return isBeachBiome(b.field_76756_M) || isOceanicBiome(b.field_76756_M) || b == TFCBiome.lake || b == TFCBiome.river; } public static String translate(String s) { return StatCollector.func_74838_a(s); } public static void sendInfoMessage(EntityPlayer player, IChatComponent text) { text.func_150256_b().func_150238_a(EnumChatFormatting.GRAY).func_150217_b(Boolean.valueOf(true)); player.func_146105_b(text); } public static long getSuperSeed(World w) { return w.func_72905_C() + w.func_72912_H().func_76066_a().func_74763_f("superseed"); } private static HashMap cdmMap = new HashMap(); public static boolean PreventEntityDataUpdate = false; }
更改后文本
打开文件
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: TFC_Core.java package com.bioxx.tfc.Core; import com.bioxx.tfc.Blocks.BlockSlab; import com.bioxx.tfc.Chunkdata.ChunkData; import com.bioxx.tfc.Chunkdata.ChunkDataManager; import com.bioxx.tfc.CommonProxy; import com.bioxx.tfc.Core.Player.BodyTempStats; import com.bioxx.tfc.Core.Player.FoodStatsTFC; import com.bioxx.tfc.Core.Player.InventoryPlayerTFC; import com.bioxx.tfc.Core.Player.SkillStats; import com.bioxx.tfc.Food.ItemFoodTFC; import com.bioxx.tfc.Items.ItemBlocks.ItemTerraBlock; import com.bioxx.tfc.Items.ItemOre; import com.bioxx.tfc.Items.ItemTerra; import com.bioxx.tfc.TerraFirmaCraft; import com.bioxx.tfc.TileEntities.TEMetalSheet; import com.bioxx.tfc.TileEntities.TEPartial; import com.bioxx.tfc.WorldGen.TFCBiome; import com.bioxx.tfc.WorldGen.WorldCacheManager; import com.bioxx.tfc.api.Constant.Global; import com.bioxx.tfc.api.Entities.IAnimal; import com.bioxx.tfc.api.Enums.EnumFuelMaterial; import com.bioxx.tfc.api.Food; import com.bioxx.tfc.api.Interfaces.IFood; import com.bioxx.tfc.api.*; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import java.nio.ByteBuffer; import java.util.*; import net.minecraft.block.Block; import net.minecraft.block.BlockFire; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.*; import net.minecraft.entity.ai.attributes.IAttributeInstance; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.*; import net.minecraft.world.*; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.storage.WorldInfo; import net.minecraftforge.common.util.ForgeDirection; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; // Referenced classes of package com.bioxx.tfc.Core: // Recipes, TFC_Time, TFC_Climate public class TFC_Core { public TFC_Core() { } public static ChunkDataManager getCDM(World world) { int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g; return (ChunkDataManager)cdmMap.get(Integer.valueOf(key)); } public static ChunkDataManager addCDM(World world) { int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g; if(!cdmMap.containsKey(Integer.valueOf(key))) return (ChunkDataManager)cdmMap.put(Integer.valueOf(key), new ChunkDataManager(world)); else return (ChunkDataManager)cdmMap.get(Integer.valueOf(key)); } public static ChunkDataManager removeCDM(World world) { int key = world.field_72995_K ? 0x80 | world.field_73011_w.field_76574_g : world.field_73011_w.field_76574_g; return (ChunkDataManager)cdmMap.remove(Integer.valueOf(key)); } public static int getMouseX() { ScaledResolution scaledresolution = new ScaledResolution(Minecraft.func_71410_x(), Minecraft.func_71410_x().field_71443_c, Minecraft.func_71410_x().field_71440_d); int i = scaledresolution.func_78326_a(); int k = (Mouse.getX() * i) / Minecraft.func_71410_x().field_71443_c; return k; } public static int getMouseY() { ScaledResolution scaledresolution = new ScaledResolution(Minecraft.func_71410_x(), Minecraft.func_71410_x().field_71443_c, Minecraft.func_71410_x().field_71440_d); int j = scaledresolution.func_78328_b(); int l = j - (Mouse.getY() * j) / Minecraft.func_71410_x().field_71440_d - 1; return l; } static Boolean isBlockAboveSolid(IBlockAccess blockAccess, int i, int j, int k) { if(TerraFirmaCraft.proxy.getCurrentWorld().func_147439_a(i, j + 1, k).func_149662_c()) return Boolean.valueOf(true); else return Boolean.valueOf(false); } public static int getExtraEquipInventorySize() { return 1; } public static InventoryPlayer getNewInventory(EntityPlayer player) { InventoryPlayer ip = player.field_71071_by; NBTTagList nbt = new NBTTagList(); nbt = player.field_71071_by.func_70442_a(nbt); ip = new InventoryPlayerTFC(player); ip.func_70443_b(nbt); return ip; } public static ItemStack RandomGem(Random random, int rockType) { ItemStack is = null; if(random.nextInt(500) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 0)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 0)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 0)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 0)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 0)); items.add(new ItemStack(TFCItems.GemJade, 1, 0)); items.add(new ItemStack(TFCItems.GemJasper, 1, 0)); items.add(new ItemStack(TFCItems.GemOpal, 1, 0)); items.add(new ItemStack(TFCItems.GemRuby, 1, 0)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 0)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 0)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 0)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } else if(random.nextInt(1000) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 1)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 1)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 1)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 1)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 1)); items.add(new ItemStack(TFCItems.GemJade, 1, 1)); items.add(new ItemStack(TFCItems.GemJasper, 1, 1)); items.add(new ItemStack(TFCItems.GemOpal, 1, 1)); items.add(new ItemStack(TFCItems.GemRuby, 1, 1)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 1)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 1)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 1)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } else if(random.nextInt(2000) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 2)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 2)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 2)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 2)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 2)); items.add(new ItemStack(TFCItems.GemJade, 1, 2)); items.add(new ItemStack(TFCItems.GemJasper, 1, 2)); items.add(new ItemStack(TFCItems.GemOpal, 1, 2)); items.add(new ItemStack(TFCItems.GemRuby, 1, 2)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 2)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 2)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 2)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } else if(random.nextInt(4000) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 3)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 3)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 3)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 3)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 3)); items.add(new ItemStack(TFCItems.GemJade, 1, 3)); items.add(new ItemStack(TFCItems.GemJasper, 1, 3)); items.add(new ItemStack(TFCItems.GemOpal, 1, 3)); items.add(new ItemStack(TFCItems.GemRuby, 1, 3)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 3)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 3)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 3)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } else if(random.nextInt(8000) == 0) { ArrayList items = new ArrayList(); items.add(new ItemStack(TFCItems.GemAgate, 1, 4)); items.add(new ItemStack(TFCItems.GemAmethyst, 1, 4)); items.add(new ItemStack(TFCItems.GemBeryl, 1, 4)); items.add(new ItemStack(TFCItems.GemEmerald, 1, 4)); items.add(new ItemStack(TFCItems.GemGarnet, 1, 4)); items.add(new ItemStack(TFCItems.GemJade, 1, 4)); items.add(new ItemStack(TFCItems.GemJasper, 1, 4)); items.add(new ItemStack(TFCItems.GemOpal, 1, 4)); items.add(new ItemStack(TFCItems.GemRuby, 1, 4)); items.add(new ItemStack(TFCItems.GemSapphire, 1, 4)); items.add(new ItemStack(TFCItems.GemTourmaline, 1, 4)); items.add(new ItemStack(TFCItems.GemTopaz, 1, 4)); is = (ItemStack)items.toArray()[random.nextInt(items.toArray().length)]; } return is; } public static void SurroundWithLeaves(World world, int i, int j, int k, int meta, Random R) { for(int y = 2; y >= -2; y--) { for(int x = 2; x >= -2; x--) { for(int z = 2; z >= -2; z--) if(world.func_147437_c(i + x, j + y, k + z)) world.func_147465_d(i + x, j + y, k + z, TFCBlocks.Leaves, meta, 2); } } } public static void SetupWorld(World world) { long seed = world.func_72905_C(); Random R = new Random(seed); world.field_73011_w.func_76558_a(world); Recipes.registerAnvilRecipes(R, world); } public static void SetupWorld(World w, long seed) { try { ReflectionHelper.setPrivateValue(net/minecraft/world/storage/WorldInfo, w.func_72912_H(), Long.valueOf(seed), 0); SetupWorld(w); } catch(Exception exception) { } } public static boolean isRawStone(World world, int x, int y, int z) { Block block = world.func_147439_a(x, y, z); return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneSed || block == TFCBlocks.StoneMM; } public static boolean isSmoothStone(World world, int x, int y, int z) { Block block = world.func_147439_a(x, y, z); return block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneMMSmooth; } public static boolean isSmoothStone(Block block) { return block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneMMSmooth; } public static boolean isBrickStone(Block block) { return block == TFCBlocks.StoneIgExBrick || block == TFCBlocks.StoneIgInBrick || block == TFCBlocks.StoneSedBrick || block == TFCBlocks.StoneMMBrick; } public static boolean isRawStone(Block block) { return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneSed || block == TFCBlocks.StoneMM; } public static boolean isOreStone(Block block) { return block == TFCBlocks.Ore || block == TFCBlocks.Ore2 || block == TFCBlocks.Ore3; } public static boolean isNaturalStone(Block block) { return isRawStone(block) || isOreStone(block); } public static boolean isCobbleStone(Block block) { return block == TFCBlocks.StoneIgExCobble || block == TFCBlocks.StoneIgInCobble || block == TFCBlocks.StoneSedCobble || block == TFCBlocks.StoneMMCobble; } public static boolean isStoneIgEx(Block block) { return block == TFCBlocks.StoneIgEx || block == TFCBlocks.StoneIgExCobble || block == TFCBlocks.StoneIgExSmooth || block == TFCBlocks.StoneIgExBrick || block == TFCBlocks.WallRawIgEx || block == TFCBlocks.WallCobbleIgEx || block == TFCBlocks.WallBrickIgEx || block == TFCBlocks.WallSmoothIgEx; } public static boolean isStoneIgIn(Block block) { return block == TFCBlocks.StoneIgIn || block == TFCBlocks.StoneIgInCobble || block == TFCBlocks.StoneIgInSmooth || block == TFCBlocks.StoneIgInBrick || block == TFCBlocks.WallRawIgIn || block == TFCBlocks.WallCobbleIgIn || block == TFCBlocks.WallBrickIgIn || block == TFCBlocks.WallSmoothIgIn; } public static boolean isStoneSed(Block block) { return block == TFCBlocks.StoneSed || block == TFCBlocks.StoneSedCobble || block == TFCBlocks.StoneSedSmooth || block == TFCBlocks.StoneSedBrick || block == TFCBlocks.WallRawSed || block == TFCBlocks.WallCobbleSed || block == TFCBlocks.WallBrickSed || block == TFCBlocks.WallSmoothSed; } public static boolean isStoneMM(Block block) { return block == TFCBlocks.StoneMM || block == TFCBlocks.StoneMMCobble || block == TFCBlocks.StoneMMSmooth || block == TFCBlocks.StoneMMBrick || block == TFCBlocks.WallRawMM || block == TFCBlocks.WallCobbleMM || block == TFCBlocks.WallBrickMM || block == TFCBlocks.WallSmoothMM; } public static boolean isDirt(Block block) { return block == TFCBlocks.Dirt || block == TFCBlocks.Dirt2; } public static boolean isFarmland(Block block) { return block == TFCBlocks.tilledSoil || block == TFCBlocks.tilledSoil2; } public static boolean isGrass(Block block) { return block == TFCBlocks.Grass || block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.PeatGrass || block == TFCBlocks.DryGrass || block == TFCBlocks.DryGrass2; } public static boolean isGrassNormal(Block block) { return block == TFCBlocks.Grass || block == TFCBlocks.Grass2; } public static boolean isLushGrass(Block block) { return block == TFCBlocks.Grass || block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.PeatGrass; } public static boolean isClayGrass(Block block) { return block == TFCBlocks.ClayGrass || block == TFCBlocks.ClayGrass2; } public static boolean isPeatGrass(Block block) { return block == TFCBlocks.PeatGrass; } public static boolean isDryGrass(Block block) { return block == TFCBlocks.DryGrass || block == TFCBlocks.DryGrass2; } public static boolean isGrassType1(Block block) { return block == TFCBlocks.Grass || block == TFCBlocks.ClayGrass || block == TFCBlocks.DryGrass; } public static boolean isGrassType2(Block block) { return block == TFCBlocks.Grass2 || block == TFCBlocks.ClayGrass2 || block == TFCBlocks.DryGrass2; } public static boolean isClay(Block block) { return block == TFCBlocks.Clay || block == TFCBlocks.Clay2; } public static boolean isSand(Block block) { return block == TFCBlocks.Sand || block == TFCBlocks.Sand2; } public static boolean isPeat(Block block) { return block == TFCBlocks.Peat; } public static boolean isNotWater(Block block) { return !isSaltWater(block) || !isFreshWater(block) || !isHotWater(block); } public static boolean isHotWater(Block block) { return block == TFCBlocks.HotWater; } public static boolean isWater(Block block) { return isSaltWater(block) || isFreshWater(block); } public static boolean isWaterFlowing(Block block) { return block == TFCBlocks.SaltWater || block == TFCBlocks.FreshWater || block == TFCBlocks.HotWater; } public static boolean isSaltWater(Block block) { return block == TFCBlocks.SaltWater || block == TFCBlocks.SaltWaterStationary; } public static boolean isSaltWaterIncludeIce(Block block, int meta, Material mat) { return block == TFCBlocks.SaltWater || block == TFCBlocks.SaltWaterStationary || mat == Material.field_151588_w && meta == 0; } public static boolean isFreshWater(Block block) { return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary; } public static boolean isFreshWaterIncludeIce(Block block, int meta) { return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary || block == TFCBlocks.Ice && meta != 0; } public static boolean isFreshWaterIncludeIce(Block block, int meta, Material mat) { return block == TFCBlocks.FreshWater || block == TFCBlocks.FreshWaterStationary || mat == Material.field_151588_w && meta != 0; } public static boolean isSoil(Block block) { return isGrass(block) || isDirt(block) || isClay(block) || isPeat(block); } public static boolean isSoilOrGravel(Block block) { return isGrass(block) || isDirt(block) || isClay(block) || isPeat(block) || isGravel(block); } public static boolean isGravel(Block block) { return block == TFCBlocks.Gravel || block == TFCBlocks.Gravel2; } public static boolean isGround(Block block) { return isSoilOrGravel(block) || isRawStone(block) || isSand(block); } public static boolean isGroundType1(Block block) { return isGrassType1(block) || block == TFCBlocks.Dirt || block == TFCBlocks.Gravel || block == TFCBlocks.Sand;} public static boolean isSoilWAILA(Block block) { return isDirt(block) || isGravel(block) || isSand(block) || isGrassNormal(block) || isDryGrass(block); } public static int getSoilMetaFromStone(Block inBlock, int inMeta) { if(inBlock == TFCBlocks.StoneIgIn) return inMeta; if(inBlock == TFCBlocks.StoneSed) return inMeta + 3; if(inBlock == TFCBlocks.StoneIgEx) return inMeta + 11; if(inMeta == 0) return inMeta + 15; else return inMeta - 1; } public static int getSoilMeta(int inMeta) { return inMeta & 0xf; } public static int getItemMetaFromStone(Block inBlock, int inMeta) { if(inBlock == TFCBlocks.StoneIgIn) return inMeta; if(inBlock == TFCBlocks.StoneSed) return inMeta + 3; if(inBlock == TFCBlocks.StoneIgEx) return inMeta + 11; if(inBlock == TFCBlocks.StoneMM) return inMeta + 15; else return 0; } public static Block getTypeForGrassWithRain(int inMeta, float rain) { if(rain >= 500F) return getTypeForGrass(inMeta); else return getTypeForDryGrass(inMeta); } public static Block getTypeForGrassWithRainByBlock(Block block, float rain) { if(rain >= 500F) return getTypeForGrassFromSoil(block); else return getTypeForDryGrassFromSoil(block); } public static Block getTypeForGrass(int inMeta) { if(inMeta < 16) return TFCBlocks.Grass; else return TFCBlocks.Grass2; } public static Block getTypeForGrassFromDirt(Block block) { if(block == TFCBlocks.Dirt) return TFCBlocks.Grass; else return TFCBlocks.Grass2; } public static Block getTypeForDryGrass(int inMeta) { if(inMeta < 16) return TFCBlocks.DryGrass; else return TFCBlocks.DryGrass2; } public static Block getTypeForDryGrassFromSoil(Block block) { if(block == TFCBlocks.Grass) return TFCBlocks.DryGrass; if(block == TFCBlocks.Dirt) return TFCBlocks.DryGrass; else return TFCBlocks.DryGrass2; } public static Block getTypeForGrassFromSoil(Block block) { if(block == TFCBlocks.DryGrass) return TFCBlocks.Grass; if(block == TFCBlocks.DryGrass2) return TFCBlocks.Grass2; if(block == TFCBlocks.Dirt) return TFCBlocks.Grass; else return TFCBlocks.Grass2; } public static Block getTypeForClayGrass(int inMeta) { if(inMeta < 16) return TFCBlocks.ClayGrass; else return TFCBlocks.ClayGrass2; } public static Block getTypeForClayGrass(Block block) { if(isGroundType1(block)) return TFCBlocks.ClayGrass; else return TFCBlocks.ClayGrass2; } public static Block getTypeForDirt(int inMeta) { if(inMeta < 16) return TFCBlocks.Dirt; else return TFCBlocks.Dirt2; } public static Block getTypeForDirtFromGrass(Block block) { if(isDirt(block)) return block; if(block == TFCBlocks.Grass || block == TFCBlocks.DryGrass) return TFCBlocks.Dirt; else return TFCBlocks.Dirt2; } public static Block getTypeForClay(int inMeta) { if(inMeta < 16) return TFCBlocks.Clay; else return TFCBlocks.Clay2; } public static Block getTypeForClay(Block block) { if(isGroundType1(block)) return TFCBlocks.Clay; else return TFCBlocks.Clay2; } public static Block getTypeForSand(int inMeta) { if(inMeta < 16) return TFCBlocks.Sand; else return TFCBlocks.Sand2; } public static Block getTypeForGravel(int inMeta) { if(inMeta < 16) return TFCBlocks.Gravel; else return TFCBlocks.Gravel2; } public static int getRockLayerFromHeight(World world, int x, int y, int z) { ChunkData cd = getCDM(world).getData(x >> 4, z >> 4); if(cd != null) { int hm[] = cd.heightmap; int localX = x & 0xf; int localZ = z & 0xf; int localY = localX + localZ * 16; if(y <= TFCOptions.RockLayer3Height + hm[localY]) return 2; return y > TFCOptions.RockLayer2Height + hm[localY] ? 0 : 1; } else { return 0; } } public static boolean convertGrassToDirt(World world, int i, int j, int k) { Block block = world.func_147439_a(i, j, k); int meta = world.func_72805_g(i, j, k); if(isGrass(block)) { if(isGrassType1(block)) { world.func_147465_d(i, j, k, TFCBlocks.Dirt, meta, 2); return true; } if(isGrassType2(block)) { world.func_147465_d(i, j, k, TFCBlocks.Dirt2, meta, 2); return true; } } return false; } public static EnumFuelMaterial getFuelMaterial(ItemStack is) { if(is.func_77973_b() == Item.func_150898_a(TFCBlocks.Peat)) return EnumFuelMaterial.PEAT; if(is.func_77973_b() == TFCItems.Coal && is.func_77960_j() == 0) return EnumFuelMaterial.COAL; if(is.func_77973_b() == TFCItems.Coal && is.func_77960_j() == 1) return EnumFuelMaterial.CHARCOAL; if(is.func_77960_j() == 0) return EnumFuelMaterial.ASH; if(is.func_77960_j() == 1) return EnumFuelMaterial.ASPEN; if(is.func_77960_j() == 2) return EnumFuelMaterial.BIRCH; if(is.func_77960_j() == 3) return EnumFuelMaterial.CHESTNUT; if(is.func_77960_j() == 4) return EnumFuelMaterial.DOUGLASFIR; if(is.func_77960_j() == 5) return EnumFuelMaterial.HICKORY; if(is.func_77960_j() == 6) return EnumFuelMaterial.MAPLE; if(is.func_77960_j() == 7) return EnumFuelMaterial.OAK; if(is.func_77960_j() == 8) return EnumFuelMaterial.PINE; if(is.func_77960_j() == 9) return EnumFuelMaterial.REDWOOD; if(is.func_77960_j() == 10) return EnumFuelMaterial.SPRUCE; if(is.func_77960_j() == 11) return EnumFuelMaterial.SYCAMORE; if(is.func_77960_j() == 12) return EnumFuelMaterial.WHITECEDAR; if(is.func_77960_j() == 13) return EnumFuelMaterial.WHITEELM; if(is.func_77960_j() == 14) return EnumFuelMaterial.WILLOW; if(is.func_77960_j() == 15) return EnumFuelMaterial.KAPOK; if(is.func_77960_j() == 16) return EnumFuelMaterial.ACACIA; else return EnumFuelMaterial.ASPEN; } public static boolean showShiftInformation() { return FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT && Keyboard.isKeyDown(42); } public static boolean showCtrlInformation() { return FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT && Keyboard.isKeyDown(29); } public static FoodStatsTFC getPlayerFoodStats(EntityPlayer player) { FoodStatsTFC foodstats = new FoodStatsTFC(player); foodstats.readNBT(player.getEntityData()); return foodstats; } public static void setPlayerFoodStats(EntityPlayer player, FoodStatsTFC foodstats) { foodstats.writeNBT(player.getEntityData()); } public static BodyTempStats getBodyTempStats(EntityPlayer player) { BodyTempStats body = new BodyTempStats(); body.readNBT(player.getEntityData()); return body; } public static void setBodyTempStats(EntityPlayer player, BodyTempStats tempStats) { tempStats.writeNBT(player.getEntityData()); } public static SkillStats getSkillStats(EntityPlayer player) { SkillStats skills = new SkillStats(player); skills.readNBT(player.getEntityData()); return skills; } public static void setSkillStats(EntityPlayer player, SkillStats skills) { skills.writeNBT(player.getEntityData()); } public static boolean isTopFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getTopChiselLevel(te.extraData) == 0; } if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.TopExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.UP); } public static boolean isBottomFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getBottomChiselLevel(te.extraData) == 0; } if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.BottomExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.DOWN); } public static boolean isNorthFaceSolid(World world, int x, int y, int z) { Block bid = world.func_147439_a(x, y, z); if(bid.func_149721_r()) return true; if(bid == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getNorthChiselLevel(te.extraData) == 0; } if(bid == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.NorthExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.NORTH); } public static boolean isSouthFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getSouthChiselLevel(te.extraData) == 0; } if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.SouthExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.SOUTH); } public static boolean isEastFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); if(BlockSlab.getEastChiselLevel(te.extraData) != 0) return true; } else if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.EastExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.EAST); } public static boolean isWestFaceSolid(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z).func_149721_r()) return true; if(world.func_147439_a(x, y, z) == TFCBlocks.stoneSlabs) { TEPartial te = (TEPartial)world.func_147438_o(x, y, z); return BlockSlab.getWestChiselLevel(te.extraData) == 0; } if(world.func_147439_a(x, y, z) == TFCBlocks.MetalSheet) { TEMetalSheet te = (TEMetalSheet)world.func_147438_o(x, y, z); if(te.WestExists()) return true; } return world.func_147439_a(x, y, z).isSideSolid(world, x, y, z, ForgeDirection.WEST); } public static boolean isOreIron(ItemStack is) { return (is.func_77973_b() instanceof ItemOre) && ((ItemOre)is.func_77973_b()).GetMetalType(is) == Global.PIGIRON; } public static float getEntityMaxHealth(EntityLivingBase entity) { return (float)entity.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111126_e(); } public static float getPercentGrown(IAnimal animal) { float birth = animal.getBirthDay(); float time = TFC_Time.getTotalDays(); float percent = (time - birth) / (float)animal.getNumberOfDaysToAdult(); return Math.min(percent, 1.0F); } public static void bindTexture(ResourceLocation texture) { Minecraft.func_71410_x().func_110434_K().func_110577_a(texture); } public static boolean isPlayerInDebugMode(EntityPlayer player) { return TFCOptions.enableDebugMode; } public static void addPlayerExhaustion(EntityPlayer player, float exhaustion) { FoodStatsTFC foodstats = getPlayerFoodStats(player); foodstats.addFoodExhaustion(exhaustion); foodstats.addWaterExhaustion(exhaustion); setPlayerFoodStats(player, foodstats); } public static float getEnvironmentalDecay(float temp) { if(temp > 0.0F) { float tempFactor = 1.0F - 15F / (15F + temp); return tempFactor * 2.0F; } else { return 0.0F; } } public static void handleItemTicking(IInventory iinv, World world, int x, int y, int z) { handleItemTicking(iinv, world, x, y, z, 1.0F); } public static void handleItemTicking(ItemStack iinv[], World world, int x, int y, int z) { handleItemTicking(iinv, world, x, y, z, 1.0F); } public static void handleItemTickingNoProtect(ItemStack iinv[], World world, int x, int y, int z) { handleItemTicking(iinv, world, x, y, z, -1F); } public static void handleItemTicking(IInventory iinv, World world, int x, int y, int z, float environmentalDecayFactor) { for(int i = 0; !world.field_72995_K && i < iinv.func_70302_i_(); i++) { ItemStack is = iinv.func_70301_a(i); if(is != null && iinv.func_70301_a(i).field_77994_a <= 0) iinv.func_70299_a(i, null); if(is == null) continue; if(is.field_77994_a == 0) { iinv.func_70299_a(i, null); continue; } if((is.func_77973_b() instanceof ItemTerra) && ((ItemTerra)is.func_77973_b()).onUpdate(is, world, x, y, z) || (is.func_77973_b() instanceof ItemTerraBlock) && ((ItemTerraBlock)is.func_77973_b()).onUpdate(is, world, x, y, z)) continue; is = tickDecay(is, world, x, y, z, environmentalDecayFactor, 1.0F); if(is != null) TFC_ItemHeat.HandleItemHeat(is); iinv.func_70299_a(i, is); } } public static byte getByteFromSmallFloat(float f) { MathHelper.func_76131_a(f, 0.5F, 1.5F); return (byte)(Float.floatToIntBits(f) >> 16 & 0xff); } public static float getSmallFloatFromByte(byte b) { return ByteBuffer.wrap(new byte[] { 63, b, 0, 0 }).getFloat(); } public static void handleItemTicking(IInventory iinv, World world, int x, int y, int z, float environmentalDecayFactor, float baseDecayMod) { for(int i = 0; !world.field_72995_K && i < iinv.func_70302_i_(); i++) { ItemStack is = iinv.func_70301_a(i); if(is != null && iinv.func_70301_a(i).field_77994_a <= 0) iinv.func_70299_a(i, null); if(is == null || (is.func_77973_b() instanceof ItemTerra) && ((ItemTerra)is.func_77973_b()).onUpdate(is, world, x, y, z) || (is.func_77973_b() instanceof ItemTerraBlock) && ((ItemTerraBlock)is.func_77973_b()).onUpdate(is, world, x, y, z)) continue; is = tickDecay(is, world, x, y, z, environmentalDecayFactor, baseDecayMod); if(is != null) TFC_ItemHeat.HandleItemHeat(is); iinv.func_70299_a(i, is); } } public static void handleItemTicking(ItemStack iinv[], World world, int x, int y, int z, float environmentalDecayFactor) { for(int i = 0; !world.field_72995_K && i < iinv.length; i++) { ItemStack is = iinv[i]; if(is != null && iinv[i].field_77994_a <= 0) iinv[i] = null; if(is == null || (is.func_77973_b() instanceof ItemTerra) && ((ItemTerra)is.func_77973_b()).onUpdate(is, world, x, y, z) || (is.func_77973_b() instanceof ItemTerraBlock) && ((ItemTerraBlock)is.func_77973_b()).onUpdate(is, world, x, y, z)) continue; is = tickDecay(is, world, x, y, z, environmentalDecayFactor, 1.0F); if(is != null) TFC_ItemHeat.HandleItemHeat(is); iinv[i] = is; } } private static ItemStack tickDecay(ItemStack is, World world, int x, int y, int z, float environmentalDecayFactor, float baseDecayMod) { NBTTagCompound nbt = is.func_77978_p(); if(nbt == null || !nbt.func_74764_b("foodWeight") || !nbt.func_74764_b("foodDecay")) return is; boolean def = true; if(environmentalDecayFactor < 0.0F) { environmentalDecayFactor *= -1F; def = false; } if((long)nbt.func_74762_e("decayTimer") < TFC_Time.getTotalHours()) { int timeDiff = (int)(TFC_Time.getTotalHours() - (long)nbt.func_74762_e("decayTimer")); float protMult = 1.0F; if(TFCOptions.useDecayProtection & def) if(timeDiff > TFCOptions.decayProtectionDays * 24) nbt.func_74768_a("decayTimer", (int)TFC_Time.getTotalHours() - 24); else if(timeDiff > 24) protMult = 1 - timeDiff / (TFCOptions.decayProtectionDays * 24); float decay = nbt.func_74760_g("foodDecay"); float thisDecayRate = 1.0F; if(is.func_77973_b() instanceof IFood) thisDecayRate = ((IFood)is.func_77973_b()).getDecayRate(is); if(nbt.func_74764_b("decayRate")) thisDecayRate = nbt.func_74760_g("decayRate"); float temp = getCachedTemp(world, x, y, z, nbt.func_74762_e("decayTimer")); float environmentalDecay = getEnvironmentalDecay(temp) * environmentalDecayFactor; if(decay < 0.0F) { float d = 1.0F * (thisDecayRate * baseDecayMod * environmentalDecay); if(decay + d < 0.0F) decay += d; else decay = 0.0F; } else if(decay == 0.0F) { decay = nbt.func_74760_g("foodWeight") * (world.field_73012_v.nextFloat() * 0.005F) * TFCOptions.decayMultiplier; } else { double fdr = Global.FOOD_DECAY_RATE - 1.0D; fdr *= thisDecayRate * baseDecayMod * environmentalDecay * protMult * TFCOptions.decayMultiplier; decay = (float)((double)decay * (1.0D + fdr)); } nbt.func_74768_a("decayTimer", nbt.func_74762_e("decayTimer") + 1); nbt.func_74776_a("foodDecay", decay); if(timeDiff > 200) { nbt.func_74768_a("decayTimer", nbt.func_74762_e("decayTimer") + 10); nbt.func_74776_a("foodDecay", decay + 5F); } } if(nbt.func_74760_g("foodDecay") / nbt.func_74760_g("foodWeight") > 0.9F) { if(is.func_77973_b() instanceof IFood) is = ((IFood)is.func_77973_b()).onDecayed(is, world, x, y, z); else is.field_77994_a = 0; } else { is.func_77982_d(nbt); } return is; } public static float getCachedTemp(World world, int x, int y, int z, int th) { float cacheTemp = TFC_Climate.getCacheManager(world).getTemp(x, z, th); if(cacheTemp != 1.401298E-45F) { return cacheTemp; } else { float temp = TFC_Climate.getHeightAdjustedTempSpecificDay(world, TFC_Time.getDayFromTotalHours(th), TFC_Time.getHourOfDayFromTotalHours(th), x, y, z); addCachedTemp(world, x, z, th, temp); return temp; } } public static void addCachedTemp(World world, int x, int z, int th, float temp) { TFC_Climate.getCacheManager(world).addTemp(x, z, th, temp); } public static void animalDropMeat(Entity e, Item i, float foodWeight) { ItemStack is = ItemFoodTFC.createTag(new ItemStack(i, 1), foodWeight); Random r = new Random(e.func_110124_au().getLeastSignificantBits() + e.func_110124_au().getMostSignificantBits()); Food.adjustFlavor(is, r); e.capturedDrops.add(new EntityItem(e.field_70170_p, e.field_70165_t, e.field_70163_u, e.field_70161_v, is)); } public static Vec3 getEntityPos(Entity e) { return Vec3.func_72443_a(e.field_70165_t, e.field_70163_u, e.field_70161_v); } public static void giveItemToPlayer(ItemStack is, EntityPlayer player) { if(player.field_70170_p.field_72995_K) { return; } else { EntityItem ei = player.func_70099_a(is, 1.0F); ei.field_145804_b = 0; return; } } public static boolean isFence(Block b) { return b == TFCBlocks.Fence || b == TFCBlocks.Fence2; } public static boolean isVertSupport(Block b) { return b == TFCBlocks.WoodSupportV || b == TFCBlocks.WoodSupportV2; } public static boolean isHorizSupport(Block b) { return b == TFCBlocks.WoodSupportH || b == TFCBlocks.WoodSupportH2; } public static boolean isOceanicBiome(int id) { return id == TFCBiome.ocean.field_76756_M || id == TFCBiome.DeepOcean.field_76756_M; } public static boolean isMountainBiome(int id) { return id == TFCBiome.Mountains.field_76756_M || id == TFCBiome.MountainsEdge.field_76756_M; } public static boolean isBeachBiome(int id) { return id == TFCBiome.beach.field_76756_M || id == TFCBiome.gravelbeach.field_76756_M; } public static boolean isValidCharcoalPitCover(Block block) { if(Blocks.field_150480_ab.getFlammability(block) > 0 && block != TFCBlocks.LogPile) return false; else return block == TFCBlocks.LogPile || isCobbleStone(block) || isBrickStone(block) || isSmoothStone(block) || isGround(block) || block == Blocks.field_150359_w || block == Blocks.field_150399_cn || block == TFCBlocks.MetalTrapDoor || block == Blocks.field_150454_av || block.func_149662_c(); } public static void writeInventoryToNBT(NBTTagCompound nbt, ItemStack storage[]) { writeInventoryToNBT(nbt, storage, "Items"); } public static void writeInventoryToNBT(NBTTagCompound nbt, ItemStack storage[], String name) { NBTTagList nbttaglist = new NBTTagList(); for(int i = 0; i < storage.length; i++) if(storage[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.func_74774_a("Slot", (byte)i); storage[i].func_77955_b(nbttagcompound1); nbttaglist.func_74742_a(nbttagcompound1); } nbt.func_74782_a(name, nbttaglist); } public static void readInventoryFromNBT(NBTTagCompound nbt, ItemStack storage[]) { readInventoryFromNBT(nbt, storage, "Items"); } public static void readInventoryFromNBT(NBTTagCompound nbt, ItemStack storage[], String name) { NBTTagList nbttaglist = nbt.func_150295_c(name, 10); for(int i = 0; i < nbttaglist.func_74745_c(); i++) { NBTTagCompound nbttagcompound1 = nbttaglist.func_150305_b(i); byte byte0 = nbttagcompound1.func_74771_c("Slot"); if(byte0 >= 0 && byte0 < storage.length) storage[byte0] = ItemStack.func_77949_a(nbttagcompound1); } } public static ItemStack getItemInInventory(Item item, IInventory iinv) { for(int i = 0; i < iinv.func_70302_i_(); i++) { iinv.func_70301_a(i); if(iinv.func_70301_a(i) != null && iinv.func_70301_a(i).func_77973_b() == item) return iinv.func_70301_a(i); } return null; } public static void DestroyBlock(World world, int x, int y, int z) { if(world.func_147439_a(x, y, z) != Blocks.field_150350_a) { world.func_147439_a(x, y, z).func_149697_b(world, x, y, z, world.func_72805_g(x, y, z), 0); world.func_147468_f(x, y, z); } } public static boolean areItemsEqual(ItemStack is1, ItemStack is2) { Item i1 = null; int d1 = 0; Item i2 = null; int d2 = 0; if(is1 != null) { i1 = is1.func_77973_b(); d1 = is1.func_77960_j(); } if(is2 != null) { i2 = is2.func_77973_b(); d2 = is2.func_77960_j(); } return i1 == i2 && d1 == d2; } public static boolean setBlockWithDrops(World world, int x, int y, int z, Block b, int meta) { Block block = world.func_147439_a(x, y, z); if(block.func_149688_o() != Material.field_151579_a) { int l = world.func_72805_g(x, y, z); world.func_72926_e(2001, x, y, z, Block.func_149682_b(block) + (l << 12)); block.func_149697_b(world, x, y, z, l, 0); } return world.func_147465_d(x, y, z, b, meta, 3); } public static boolean setBlockToAirWithDrops(World world, int x, int y, int z) { return world.func_147480_a(x, y, z, true); } public static boolean isWaterBiome(BiomeGenBase b) { return isBeachBiome(b.field_76756_M) || isOceanicBiome(b.field_76756_M) || b == TFCBiome.lake || b == TFCBiome.river; } public static String translate(String s) { return StatCollector.func_74838_a(s); } public static void sendInfoMessage(EntityPlayer player, IChatComponent text) { text.func_150256_b().func_150238_a(EnumChatFormatting.GRAY).func_150217_b(Boolean.valueOf(true)); player.func_146105_b(text); } public static long getSuperSeed(World w) { return w.func_72905_C() + w.func_72912_H().func_76066_a().func_74763_f("superseed"); } private static HashMap cdmMap = new HashMap(); public static boolean PreventEntityDataUpdate = false; }
查找差异