Compare commits

...
9 Commits
26 changed files with 152 additions and 92 deletions

No files matched your search

+1 -1
View File
@@ -8,4 +8,4 @@ ic2_version=2.6.5-ex110
version_major=5
version_minor=2
version_patch=1
version_patch=3
+1 -1
Submodule lang updated: a8bbc7bd1c...0d52088d32.
@@ -12,10 +12,11 @@ package forestry.apiculture.blocks;
import forestry.api.core.Tabs;
import forestry.core.blocks.BlockBase;
import net.minecraft.block.material.Material;
public class BlockApiculture extends BlockBase<BlockTypeApiculture> {
public BlockApiculture(BlockTypeApiculture type) {
super(type);
super(type, Material.WOOD);
setCreativeTab(Tabs.tabApiculture);
setHarvestLevel("axe", 0);
}
@@ -12,6 +12,7 @@ package forestry.apiculture.blocks;
import java.util.Map;
import net.minecraft.block.material.Material;
import net.minecraft.item.ItemStack;
import forestry.api.core.Tabs;
@@ -36,7 +37,7 @@ public class BlockRegistryApiculture extends BlockRegistry {
beeHouse = new BlockApiculture(BlockTypeApiculture.BEE_HOUSE);
registerBlock(beeHouse, new ItemBlockForestry(beeHouse), "bee_house");
beeChest = new BlockBase<>(BlockTypeApicultureTesr.APIARIST_CHEST);
beeChest = new BlockBase<>(BlockTypeApicultureTesr.APIARIST_CHEST, Material.WOOD);
registerBlock(beeChest, new ItemBlockForestry(beeChest), "bee_chest");
beeChest.setCreativeTab(Tabs.tabApiculture);
beeChest.setHarvestLevel("axe", 0);
@@ -1,9 +1,15 @@
package forestry.apiculture.genetics.alleles;
import java.util.List;
import java.util.Random;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.genetics.IEffectData;
import forestry.core.genetics.EffectData;
import forestry.core.utils.VectUtil;
import net.minecraft.block.Block;
import net.minecraft.block.BlockMushroom;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityMooshroom;
import net.minecraft.init.Blocks;
@@ -11,12 +17,6 @@ import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3i;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenBigMushroom;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.genetics.IEffectData;
import forestry.core.genetics.EffectData;
public class AlleleEffectFungification extends AlleleEffectThrottled {
@@ -24,7 +24,7 @@ public class AlleleEffectFungification extends AlleleEffectThrottled {
private static final int ENTITY_THROTTLE = 6;
public AlleleEffectFungification() {
super("mycophilic", true, 10, false, false);
super("mycophilic", true, 20, false, false);
}
@Override
@@ -57,50 +57,51 @@ public class AlleleEffectFungification extends AlleleEffectThrottled {
World world = housing.getWorldObj();
BlockPos housingCoordinates = housing.getCoordinates();
Vec3i area = getModifiedArea(genome, housing);
int blockX = getRandomOffset(world.rand, housingCoordinates.getX(), area.getX());
int blockY = getRandomOffset(world.rand, housingCoordinates.getY(), area.getY());
int blockZ = getRandomOffset(world.rand, housingCoordinates.getZ(), area.getZ());
for (int attempt = 0; attempt < MAX_BLOCK_FIND_TRIES; ++attempt) {
BlockPos pos = new BlockPos(blockX, blockY, blockZ);
Block block = world.getBlockState(pos).getBlock();
if (isSuitableForMycelium(world, block, pos)) {
world.setBlockState(pos, Blocks.MYCELIUM.getDefaultState());
break;
} else if (isSuitableForGrowth(block)) {
doMushroomGrowth(block, world, pos);
break;
}
blockX = getRandomOffset(world.rand, housingCoordinates.getX(), area.getX());
blockY = getRandomOffset(world.rand, housingCoordinates.getY(), area.getY());
blockZ = getRandomOffset(world.rand, housingCoordinates.getZ(), area.getZ());
}
Vec3i halfArea = new Vec3i(area.getX() / 2, area.getY() / 2, area.getZ() / 2);
for (int attempt = 0; attempt < MAX_BLOCK_FIND_TRIES; ++attempt) {
BlockPos pos = VectUtil.getRandomPositionInArea(world.rand, area).subtract(halfArea).add(housingCoordinates);
IBlockState blockState = world.getBlockState(pos);
if (convertToMycelium(world, blockState, pos)) {
return;
} else if (growGiantMushroom(world, blockState, pos)) {
return;
}
}
}
private static void doEntityEffect(IBeeGenome genome, IBeeHousing housing) {
List<EntityCow> cows = getEntitiesInRange(genome, housing, EntityCow.class);
for (EntityCow cow : cows) {
convertCowToMooshroom(cow);
if (convertCowToMooshroom(cow)) {
return;
}
}
}
private static int getRandomOffset(Random random, int centrePos, int offset) {
return centrePos + random.nextInt(offset) - offset / 2;
}
private static boolean isSuitableForMycelium(World world, Block block, BlockPos pos) {
return block == Blocks.GRASS || block == Blocks.DIRT && world.canBlockSeeSky(pos);
private static boolean convertToMycelium(World world, IBlockState blockState, BlockPos pos) {
Block block = blockState.getBlock();
if (block == Blocks.GRASS || block == Blocks.DIRT && world.canBlockSeeSky(pos)) {
world.setBlockState(pos, Blocks.MYCELIUM.getDefaultState());
return true;
}
return false;
}
private static boolean isSuitableForGrowth(Block block) {
return block == Blocks.RED_MUSHROOM || block == Blocks.BROWN_MUSHROOM;
private static boolean growGiantMushroom(World world, IBlockState blockState, BlockPos pos) {
Block block = blockState.getBlock();
if (block instanceof BlockMushroom) {
BlockMushroom mushroom = (BlockMushroom) block;
mushroom.generateBigMushroom(world, pos, blockState, world.rand);
return true;
}
return false;
}
private static void convertCowToMooshroom(EntityCow cow) {
private static boolean convertCowToMooshroom(EntityCow cow) {
if (cow instanceof EntityMooshroom) {
return;
return false;
}
World worldObj = cow.worldObj;
cow.setDead();
@@ -110,14 +111,6 @@ public class AlleleEffectFungification extends AlleleEffectThrottled {
mooshroom.renderYawOffset = cow.renderYawOffset;
worldObj.spawnEntityInWorld(mooshroom);
worldObj.spawnParticle(EnumParticleTypes.EXPLOSION_LARGE, cow.posX, cow.posY + cow.height / 2.0F, cow.posZ, 0.0D, 0.0D, 0.0D);
}
private static void doMushroomGrowth(Block block, World world, BlockPos pos) {
WorldGenBigMushroom giantMushroomGenerator;
giantMushroomGenerator = new WorldGenBigMushroom(block);
world.setBlockToAir(pos);
giantMushroomGenerator.generate(world, world.rand, pos);
return true;
}
}
@@ -12,10 +12,12 @@ package forestry.arboriculture.blocks;
import forestry.api.core.Tabs;
import forestry.core.blocks.BlockBase;
import net.minecraft.block.material.Material;
public class BlockArboriculture extends BlockBase<BlockTypeArboricultureTesr> {
public BlockArboriculture(BlockTypeArboricultureTesr type) {
super(type);
super(type, Material.WOOD);
setCreativeTab(Tabs.tabArboriculture);
setHarvestLevel("axe", 0);
}
}
@@ -531,7 +531,7 @@ public abstract class BlockPile extends BlockStructure implements ITileEntityPro
}
public static IAlleleTreeSpecies getTreeSpecies(ItemStack stack) {
if (stack != null) {
if (stack != null && stack.hasTagCompound()) {
NBTTagCompound tagCompound = stack.getTagCompound();
// legacy
@@ -74,8 +74,8 @@ public class BlockBase<P extends Enum<P> & IBlockType & IStringSerializable> ext
protected final BlockStateContainer blockState;
public BlockBase(@Nonnull P blockType) {
super(Material.IRON);
public BlockBase(@Nonnull P blockType, Material material) {
super(material);
this.blockType = blockType;
blockType.getMachineProperties().setBlock(this);
@@ -90,6 +90,10 @@ public class BlockBase<P extends Enum<P> & IBlockType & IStringSerializable> ext
particleCallback = new MachineParticleCallback<>(this, blockType);
}
public BlockBase(@Nonnull P blockType) {
this(blockType, Material.IRON);
}
@Override
public boolean isOpaqueCube(IBlockState state) {
@@ -13,5 +13,6 @@ package forestry.core.blocks;
public class BlockCore extends BlockBase<BlockTypeCoreTesr> {
public BlockCore(BlockTypeCoreTesr blockType) {
super(blockType);
setHarvestLevel("pickaxe", 0);
}
}
@@ -17,7 +17,9 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemTool;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
@@ -48,6 +50,15 @@ public class ItemForestryTool extends ItemForestry {
public void setEfficiencyOnProperMaterial(float efficiencyOnProperMaterial) {
this.efficiencyOnProperMaterial = efficiencyOnProperMaterial;
}
@Override
public boolean canHarvestBlock(IBlockState block) {
if(this == PluginCore.items.bronzePickaxe){
Material material = block.getMaterial();
return material == Material.ROCK ? true : (material == Material.IRON ? true : material == Material.ANVIL);
}
return super.canHarvestBlock(block);
}
@Override
public float getStrVsBlock(ItemStack itemstack, IBlockState state) {
@@ -56,6 +67,10 @@ public class ItemForestryTool extends ItemForestry {
return efficiencyOnProperMaterial;
}
}
if(this == PluginCore.items.bronzePickaxe){
Material material = state.getMaterial();
return material != Material.IRON && material != Material.ANVIL && material != Material.ROCK ? super.getStrVsBlock(itemstack, state) : this.efficiencyOnProperMaterial;
}
return super.getStrVsBlock(itemstack, state);
}
@@ -36,6 +36,7 @@ import net.minecraft.client.resources.IResource;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.client.renderer.block.model.ModelBakery;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
@@ -60,6 +61,7 @@ import gnu.trove.map.hash.TIntObjectHashMap;
public class ModelCrate extends BlankItemModel {
private static final Map<String, IBakedModel> cache = Maps.newHashMap();
private static final String CUSTOM_CRATES = "forestry:item/crates/";
private static IModel crateModel;
private static ModelBlock MODEL_GENERATED;
@@ -174,6 +176,24 @@ public class ModelCrate extends BlankItemModel {
return new CrateOverrideList();
}
private static IModel getCustomContentModel(ItemCrated crateItem){
ItemStack contained = crateItem.getContained();
if(contained != null){
try {
return ModelLoaderRegistry.getModel(getCustomContentModelLocation(crateItem));
} catch (Exception e) {
return null;
}
}
return null;
}
private static ResourceLocation getCustomContentModelLocation(ItemCrated crateItem){
String containedName = crateItem.getRegistryName().getResourcePath().replace("crated.", "");
return new ResourceLocation(CUSTOM_CRATES + containedName);
}
/**
* Bake the crate model.
*/
@@ -181,6 +201,7 @@ public class ModelCrate extends BlankItemModel {
List<IBakedModel> models = new ArrayList<>();
IBakedModel containedModel = getModel(crateItem.getContained());
IModel customContentModel = getCustomContentModel(crateItem);
IdentityHashMap<Item, TIntObjectHashMap<ModelResourceLocation>> modelResourceLocations = ObfuscationReflectionHelper.getPrivateValue(ItemModelMesherForge.class, (ItemModelMesherForge) Minecraft.getMinecraft().getRenderItem().getItemModelMesher(), 0);
@@ -189,6 +210,11 @@ public class ModelCrate extends BlankItemModel {
models.add(crateModel);
if(customContentModel != null){
containedModel = customContentModel.bake(ModelManager.getInstance().DEFAULT_ITEM, DefaultVertexFormats.ITEM, new DefaultTextureGetter());
location = getCustomContentModelLocation(crateItem);
}
if (hasItemModel(location)) {
models.add(new TRSRBakedModel(containedModel, -0.0625F, 0, 0.0625F, 0.5F));
models.add(new TRSRBakedModel(containedModel, -0.0625F, 0, -0.0625F, 0.5F));
@@ -56,6 +56,7 @@ public class BlockEngine extends BlockBase<BlockTypeEngine> {
public BlockEngine(BlockTypeEngine blockType) {
super(blockType);
setHarvestLevel("pickaxe", 0);
}
@Override
@@ -15,5 +15,6 @@ import forestry.core.blocks.BlockBase;
public class BlockFactoryPlain extends BlockBase<BlockTypeFactoryPlain> {
public BlockFactoryPlain(BlockTypeFactoryPlain type) {
super(type);
setHarvestLevel("pickaxe", 0);
}
}
@@ -15,5 +15,6 @@ import forestry.core.blocks.BlockBase;
public class BlockFactoryTESR extends BlockBase<BlockTypeFactoryTesr> {
public BlockFactoryTESR(BlockTypeFactoryTesr type) {
super(type);
setHarvestLevel("pickaxe", 0);
}
}
@@ -10,6 +10,7 @@
******************************************************************************/
package forestry.greenhouse;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
@@ -71,23 +72,23 @@ public class PluginGreenhouse extends BlankForestryPlugin {
@Override
public void registerRecipes() {
ItemStack greenhousePlainBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.PLAIN);
Block greenhousePlainBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.PLAIN);
RecipeUtil.addRecipe(greenhousePlainBlock,
"###",
"#X#",
"###",
'X', Blocks.BRICK_BLOCK,
'#', PluginCore.items.craftingMaterial.getCamouflagedPaneling());
ItemStack greenhouseGlassBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.GLASS);
Block greenhouseGlassBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.GLASS);
RecipeUtil.addRecipe(greenhouseGlassBlock,
"###",
"#X#",
"###",
'X', "blockGlass",
'#', PluginCore.items.craftingMaterial.getCamouflagedPaneling());
ItemStack greenhouseHatchInputBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.HATCH_INPUT);
Block greenhouseHatchInputBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.HATCH_INPUT);
RecipeUtil.addRecipe(greenhouseHatchInputBlock,
"TXT",
"#H#",
@@ -95,8 +96,8 @@ public class PluginGreenhouse extends BlankForestryPlugin {
'H', OreDictUtil.TRAPDOOR_WOOD,
'#', "gearTin",
'T', PluginCore.items.tubes.get(EnumElectronTube.BRONZE, 1));
ItemStack greenhouseHatchOutputBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.HATCH_OUTPUT);
Block greenhouseHatchOutputBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.HATCH_OUTPUT);
RecipeUtil.addRecipe(greenhouseHatchOutputBlock,
"#H#",
"TXT",
@@ -104,31 +105,31 @@ public class PluginGreenhouse extends BlankForestryPlugin {
'H', OreDictUtil.TRAPDOOR_WOOD,
'#', "gearTin",
'T', PluginCore.items.tubes.get(EnumElectronTube.BRONZE, 1));
ItemStack greenhouseControlBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.CONTROL);
Block greenhouseControlBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.CONTROL);
RecipeUtil.addRecipe(greenhouseControlBlock,
" X ",
"#T#",
'X', blocks.getGreenhouseBlock(BlockGreenhouseType.PLAIN),
'#', "dustRedstone",
'T', PluginCore.items.tubes.get(EnumElectronTube.GOLD, 1));
ItemStack greenhouseGearBoxBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.GEARBOX);
Block greenhouseGearBoxBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.GEARBOX);
RecipeUtil.addRecipe(greenhouseGearBoxBlock,
" X ",
"###",
'X', blocks.getGreenhouseBlock(BlockGreenhouseType.PLAIN),
'#', "gearTin");
ItemStack greenhouseValveBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.VALVE);
Block greenhouseValveBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.VALVE);
RecipeUtil.addRecipe(greenhouseValveBlock,
" X ",
"#G#",
'X', blocks.getGreenhouseBlock(BlockGreenhouseType.PLAIN),
'#', "blockGlass",
'G', "gearTin");
ItemStack greenhouseHeaterBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.HEATER);
Block greenhouseHeaterBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.HEATER);
RecipeUtil.addRecipe(greenhouseHeaterBlock,
"T#T",
"#X#",
@@ -136,8 +137,8 @@ public class PluginGreenhouse extends BlankForestryPlugin {
'X', blocks.getGreenhouseBlock(BlockGreenhouseType.PLAIN),
'#', "ingotGold",
'T', PluginCore.items.tubes.get(EnumElectronTube.GOLD, 1));
ItemStack greenhouseFanlock = blocks.getGreenhouseBlock(BlockGreenhouseType.FAN);
Block greenhouseFanlock = blocks.getGreenhouseBlock(BlockGreenhouseType.FAN);
RecipeUtil.addRecipe(greenhouseFanlock,
"T#T",
"#X#",
@@ -145,8 +146,8 @@ public class PluginGreenhouse extends BlankForestryPlugin {
'X', blocks.getGreenhouseBlock(BlockGreenhouseType.PLAIN),
'#', "ingotTin",
'T', PluginCore.items.tubes.get(EnumElectronTube.TIN, 1));
ItemStack greenhouseDryerBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.DRYER);
Block greenhouseDryerBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.DRYER);
RecipeUtil.addRecipe(greenhouseDryerBlock,
"T#T",
"#X#",
@@ -154,8 +155,8 @@ public class PluginGreenhouse extends BlankForestryPlugin {
'X', blocks.getGreenhouseBlock(BlockGreenhouseType.PLAIN),
'#', "ingotBronze",
'T', PluginCore.items.tubes.get(EnumElectronTube.BLAZE, 1));
ItemStack greenhouseSprinklerBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.SPRINKLER);
Block greenhouseSprinklerBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.SPRINKLER);
RecipeUtil.addRecipe(greenhouseSprinklerBlock,
"TXT",
" I ",
@@ -163,14 +164,15 @@ public class PluginGreenhouse extends BlankForestryPlugin {
'X', blocks.getGreenhouseBlock(BlockGreenhouseType.GLASS),
'I', "ingotIron",
'T', PluginCore.items.tubes.get(EnumElectronTube.LAPIS, 1));
ItemStack greenhouseDoorBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.DOOR);
Block greenhouseDoorBlock = blocks.getGreenhouseBlock(BlockGreenhouseType.DOOR);
RecipeUtil.addRecipe(greenhouseDoorBlock,
true,
"GG ",
"GG ",
"GG ",
'G', blocks.getGreenhouseBlock(BlockGreenhouseType.GLASS));
if (ForestryAPI.enabledPlugins.contains(ForestryPluginUids.FACTORY)) {
RecipeManagers.carpenterManager.addRecipe(50, Fluids.BIOMASS.getFluid(500), null, PluginCore.items.craftingMaterial.getCamouflagedPaneling(),
" A ", "###", "RPR",
@@ -140,7 +140,7 @@ public abstract class BlockGreenhouse extends BlockStructure implements ISpriteR
@SideOnly(Side.CLIENT)
public AxisAlignedBB getSelectedBoundingBox(IBlockState state, World worldIn, BlockPos pos) {
if (getGreenhouseType() == BlockGreenhouseType.SPRINKLER) {
return SPRINKLER_BOUNDS;
return SPRINKLER_BOUNDS.offset(pos);
}
return super.getSelectedBoundingBox(state, worldIn, pos);
}
@@ -1,9 +1,9 @@
package forestry.greenhouse.blocks;
import javax.annotation.Nullable;
import java.util.Map;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import forestry.core.blocks.BlockRegistry;
import forestry.core.items.ItemBlockForestry;
@@ -24,9 +24,8 @@ public class BlockRegistryGreenhouse extends BlockRegistry {
}
}
public ItemStack getGreenhouseBlock(BlockGreenhouseType type) {
BlockGreenhouse greenhouseBlock = greenhouseBlockMap.get(type);
return new ItemStack(greenhouseBlock);
public BlockGreenhouse getGreenhouseBlock(BlockGreenhouseType type) {
return greenhouseBlockMap.get(type);
}
}
@@ -34,9 +34,14 @@ public class ProxyGreenhouseClient extends ProxyGreenhouse {
ClientRegistry.bindTileEntitySpecialRenderer(TileGreenhouseSprinkler.class, new AnimationTESR<>());
continue;
}
Proxies.render.registerBlockModel(new BlockModelIndex(new ModelResourceLocation("forestry:greenhouse." + greenhouseType),
new ModelResourceLocation("forestry:greenhouse", "inventory"), new ModelGreenhouse(),
Block.getBlockFromItem(PluginGreenhouse.blocks.getGreenhouseBlock(greenhouseType).getItem())));
Block greenhouseBlock = PluginGreenhouse.blocks.getGreenhouseBlock(greenhouseType);
if (greenhouseBlock != null) {
ModelResourceLocation blockModelLocation = new ModelResourceLocation("forestry:greenhouse." + greenhouseType);
ModelResourceLocation itemModelLocation = new ModelResourceLocation("forestry:greenhouse", "inventory");
BlockModelIndex blockModelIndex = new BlockModelIndex(blockModelLocation, itemModelLocation, new ModelGreenhouse(), greenhouseBlock);
Proxies.render.registerBlockModel(blockModelIndex);
}
}
}
}
@@ -158,7 +158,7 @@ public class BlockCocoon extends Block implements ITileEntityProvider, IStateMap
@Override
public AxisAlignedBB getSelectedBoundingBox(IBlockState state, World worldIn, BlockPos pos) {
return BOUNDING_BOX;
return BOUNDING_BOX.offset(pos);
}
@Override
@@ -12,10 +12,12 @@ package forestry.lepidopterology.blocks;
import forestry.api.core.Tabs;
import forestry.core.blocks.BlockBase;
import net.minecraft.block.material.Material;
public class BlockLepidopterology extends BlockBase<BlockTypeLepidopterologyTesr> {
public BlockLepidopterology(BlockTypeLepidopterologyTesr type) {
super(type);
super(type, Material.WOOD);
setCreativeTab(Tabs.tabLepidopterology);
setHarvestLevel("axe", 0);
}
}
@@ -15,5 +15,6 @@ import forestry.core.blocks.BlockBase;
public class BlockMail extends BlockBase<BlockTypeMail> {
public BlockMail(BlockTypeMail blockType) {
super(blockType);
setHarvestLevel("pickaxe", 0);
}
}
@@ -1,16 +1,17 @@
package forestry.plugins.compat;
import forestry.core.blocks.BlockBase;
import forestry.core.blocks.BlockRegistry;
import forestry.energy.blocks.BlockEngine;
import forestry.energy.blocks.BlockTypeEngine;
import forestry.energy.items.ItemEngine;
public class BlockRegistryIC2 extends BlockRegistry {
public final BlockEngine electricalEngine;
public final BlockBase electricalEngine;
public final BlockEngine generator;
public BlockRegistryIC2() {
electricalEngine = new BlockEngine(BlockTypeEngine.ELECTRICAL);
electricalEngine = new BlockBase(BlockTypeEngine.ELECTRICAL);
registerBlock(electricalEngine, new ItemEngine(electricalEngine), "engine_electrical");
generator = new BlockEngine(BlockTypeEngine.GENERATOR);
@@ -1,5 +1,6 @@
{
"textures": {
"particle": "forestry:blocks/lepidopterology/cocoons/cocoon_early",
"0": "forestry:blocks/lepidopterology/cocoons/cocoon_early"
},
"elements": [
@@ -1,5 +1,6 @@
{
"textures": {
"particle": "forestry:blocks/lepidopterology/cocoons/cocoon_late",
"0": "forestry:blocks/lepidopterology/cocoons/cocoon_late"
},
"elements": [
@@ -1,5 +1,6 @@
{
"textures": {
"particle": "forestry:blocks/lepidopterology/cocoons/cocoon_middle",
"0": "forestry:blocks/lepidopterology/cocoons/cocoon_middle"
},
"elements": [
@@ -1,5 +1,6 @@
{
"textures": {
"particle": "forestry:blocks/lepidopterology/cocoons/cocoon_silk_late",
"0": "forestry:blocks/lepidopterology/cocoons/cocoon_silk_late"
},
"elements": [