mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-26 16:58:34 +01:00
added crystal clusters
This commit is contained in:
parent
910f4aaf9e
commit
d9487f8ef3
29 changed files with 721 additions and 23 deletions
|
@ -0,0 +1,144 @@
|
||||||
|
/*
|
||||||
|
* This file ("BlockCrystalCluster.java") is part of the Actually Additions mod for Minecraft.
|
||||||
|
* It is created and owned by Ellpeck and distributed
|
||||||
|
* under the Actually Additions License to be found at
|
||||||
|
* http://ellpeck.de/actaddlicense
|
||||||
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
||||||
|
*
|
||||||
|
* © 2015-2017 Ellpeck
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.ellpeck.actuallyadditions.mod.blocks;
|
||||||
|
|
||||||
|
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockBase;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.gen.WorldGenLushCaves;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.items.InitItems;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.items.metalists.TheCrystals;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingBlock;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingItem;
|
||||||
|
import net.minecraft.block.BlockDirectional;
|
||||||
|
import net.minecraft.block.SoundType;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.block.state.BlockStateContainer;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.client.renderer.color.IBlockColor;
|
||||||
|
import net.minecraft.client.renderer.color.IItemColor;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.item.EnumRarity;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.Mirror;
|
||||||
|
import net.minecraft.util.Rotation;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class BlockCrystalCluster extends BlockBase implements IColorProvidingBlock, IColorProvidingItem{
|
||||||
|
|
||||||
|
private final TheCrystals crystal;
|
||||||
|
|
||||||
|
public BlockCrystalCluster(String name, TheCrystals crystal){
|
||||||
|
super(Material.GLASS, name);
|
||||||
|
this.crystal = crystal;
|
||||||
|
|
||||||
|
this.setHardness(0.25F);
|
||||||
|
this.setResistance(1.0F);
|
||||||
|
this.setSoundType(SoundType.GLASS);
|
||||||
|
this.setLightOpacity(1);
|
||||||
|
this.setLightLevel(0.7F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFullCube(IBlockState state){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOpaqueCube(IBlockState state){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, int meta, EntityLivingBase base){
|
||||||
|
return this.getStateFromMeta(side.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EnumRarity getRarity(ItemStack stack){
|
||||||
|
return EnumRarity.EPIC;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IBlockState getStateFromMeta(int meta){
|
||||||
|
return this.getDefaultState().withProperty(BlockDirectional.FACING, EnumFacing.getFront(meta));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMetaFromState(IBlockState state){
|
||||||
|
return state.getValue(BlockDirectional.FACING).getIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected BlockStateContainer createBlockState(){
|
||||||
|
return new BlockStateContainer(this, BlockDirectional.FACING);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IBlockState withRotation(IBlockState state, Rotation rot){
|
||||||
|
return state.withProperty(BlockDirectional.FACING, rot.rotate(state.getValue(BlockDirectional.FACING)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IBlockState withMirror(IBlockState state, Mirror mirror){
|
||||||
|
return this.withRotation(state, mirror.toRotation(state.getValue(BlockDirectional.FACING)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IBlockColor getBlockColor(){
|
||||||
|
return new IBlockColor(){
|
||||||
|
@Override
|
||||||
|
public int colorMultiplier(IBlockState state, IBlockAccess world, BlockPos pos, int tintIndex){
|
||||||
|
return BlockCrystalCluster.this.crystal.clusterColor;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public BlockRenderLayer getBlockLayer(){
|
||||||
|
return BlockRenderLayer.TRANSLUCENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemColor getItemColor(){
|
||||||
|
return new IItemColor(){
|
||||||
|
@Override
|
||||||
|
public int getColorFromItemstack(ItemStack stack, int tintIndex){
|
||||||
|
return BlockCrystalCluster.this.crystal.clusterColor;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item getItemDropped(IBlockState state, Random rand, int fortune){
|
||||||
|
return InitItems.itemCrystalShard;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int damageDropped(IBlockState state){
|
||||||
|
return ArrayUtils.indexOf(WorldGenLushCaves.CRYSTAL_CLUSTERS, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int quantityDropped(Random random){
|
||||||
|
return random.nextInt(5)+2;
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.blocks.BlockLaserRelay.Type;
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockPlant;
|
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockPlant;
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockStair;
|
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockStair;
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks;
|
import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.items.metalists.TheCrystals;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.compat.CompatUtil;
|
import de.ellpeck.actuallyadditions.mod.util.compat.CompatUtil;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -109,10 +110,22 @@ public final class InitBlocks{
|
||||||
public static Block blockTinyTorch;
|
public static Block blockTinyTorch;
|
||||||
public static Block blockFarmer;
|
public static Block blockFarmer;
|
||||||
public static Block blockBatteryBox;
|
public static Block blockBatteryBox;
|
||||||
|
public static Block blockCrystalClusterRedstone;
|
||||||
|
public static Block blockCrystalClusterLapis;
|
||||||
|
public static Block blockCrystalClusterDiamond;
|
||||||
|
public static Block blockCrystalClusterCoal;
|
||||||
|
public static Block blockCrystalClusterEmerald;
|
||||||
|
public static Block blockCrystalClusterIron;
|
||||||
|
|
||||||
public static void init(){
|
public static void init(){
|
||||||
ModUtil.LOGGER.info("Initializing Blocks...");
|
ModUtil.LOGGER.info("Initializing Blocks...");
|
||||||
|
|
||||||
|
blockCrystalClusterRedstone = new BlockCrystalCluster("block_crystal_cluster_redstone", TheCrystals.REDSTONE);
|
||||||
|
blockCrystalClusterLapis = new BlockCrystalCluster("block_crystal_cluster_lapis", TheCrystals.LAPIS);
|
||||||
|
blockCrystalClusterDiamond = new BlockCrystalCluster("block_crystal_cluster_diamond", TheCrystals.DIAMOND);
|
||||||
|
blockCrystalClusterCoal = new BlockCrystalCluster("block_crystal_cluster_coal", TheCrystals.COAL);
|
||||||
|
blockCrystalClusterEmerald = new BlockCrystalCluster("block_crystal_cluster_emerald", TheCrystals.EMERALD);
|
||||||
|
blockCrystalClusterIron = new BlockCrystalCluster("block_crystal_cluster_iron", TheCrystals.IRON);
|
||||||
blockBatteryBox = new BlockBatteryBox("block_battery_box");
|
blockBatteryBox = new BlockBatteryBox("block_battery_box");
|
||||||
blockItemViewerHopping = new BlockItemViewerHopping("block_item_viewer_hopping");
|
blockItemViewerHopping = new BlockItemViewerHopping("block_item_viewer_hopping");
|
||||||
blockFarmer = new BlockFarmer("block_farmer");
|
blockFarmer = new BlockFarmer("block_farmer");
|
||||||
|
|
|
@ -25,6 +25,9 @@ import net.minecraftforge.oredict.ShapelessOreRecipe;
|
||||||
|
|
||||||
public final class MiscCrafting{
|
public final class MiscCrafting{
|
||||||
|
|
||||||
|
public static final IRecipe[] RECIPES_CRYSTAL_SHARDS = new IRecipe[TheCrystals.values().length];
|
||||||
|
public static final IRecipe[] RECIPES_CRYSTAL_SHARDS_BACK = new IRecipe[TheCrystals.values().length];
|
||||||
|
|
||||||
public static final IRecipe[] RECIPES_CRYSTALS = new IRecipe[TheCrystals.values().length];
|
public static final IRecipe[] RECIPES_CRYSTALS = new IRecipe[TheCrystals.values().length];
|
||||||
public static final IRecipe[] RECIPES_CRYSTAL_BLOCKS = new IRecipe[TheCrystals.values().length];
|
public static final IRecipe[] RECIPES_CRYSTAL_BLOCKS = new IRecipe[TheCrystals.values().length];
|
||||||
|
|
||||||
|
@ -52,6 +55,13 @@ public final class MiscCrafting{
|
||||||
RECIPES_EMPOWERED_CRYSTAL_BLOCKS[i] = RecipeUtil.lastIRecipe();
|
RECIPES_EMPOWERED_CRYSTAL_BLOCKS[i] = RecipeUtil.lastIRecipe();
|
||||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemCrystalEmpowered, 9, i), new ItemStack(InitBlocks.blockCrystalEmpowered, 1, i)));
|
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemCrystalEmpowered, 9, i), new ItemStack(InitBlocks.blockCrystalEmpowered, 1, i)));
|
||||||
RECIPES_EMPOWERED_CRYSTALS[i] = RecipeUtil.lastIRecipe();
|
RECIPES_EMPOWERED_CRYSTALS[i] = RecipeUtil.lastIRecipe();
|
||||||
|
|
||||||
|
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitItems.itemCrystal, 1, i),
|
||||||
|
"XXX", "XXX", "XXX",
|
||||||
|
'X', new ItemStack(InitItems.itemCrystalShard, 1, i)));
|
||||||
|
RECIPES_CRYSTAL_SHARDS[i] = RecipeUtil.lastIRecipe();
|
||||||
|
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemCrystalShard, 9, i), new ItemStack(InitItems.itemCrystal, 1, i)));
|
||||||
|
RECIPES_CRYSTAL_SHARDS_BACK[i] = RecipeUtil.lastIRecipe();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Dough
|
//Dough
|
||||||
|
|
|
@ -236,10 +236,17 @@ public class CreativeTab extends CreativeTabs{
|
||||||
this.add(InitItems.itemPaxelCrystalGreen);
|
this.add(InitItems.itemPaxelCrystalGreen);
|
||||||
this.add(InitItems.itemPaxelCrystalWhite);
|
this.add(InitItems.itemPaxelCrystalWhite);
|
||||||
|
|
||||||
|
this.add(InitBlocks.blockCrystalClusterRedstone);
|
||||||
|
this.add(InitBlocks.blockCrystalClusterLapis);
|
||||||
|
this.add(InitBlocks.blockCrystalClusterDiamond);
|
||||||
|
this.add(InitBlocks.blockCrystalClusterCoal);
|
||||||
|
this.add(InitBlocks.blockCrystalClusterEmerald);
|
||||||
|
this.add(InitBlocks.blockCrystalClusterIron);
|
||||||
this.add(InitBlocks.blockCrystal);
|
this.add(InitBlocks.blockCrystal);
|
||||||
this.add(InitBlocks.blockCrystalEmpowered);
|
this.add(InitBlocks.blockCrystalEmpowered);
|
||||||
this.add(InitItems.itemCrystal);
|
this.add(InitItems.itemCrystal);
|
||||||
this.add(InitItems.itemCrystalEmpowered);
|
this.add(InitItems.itemCrystalEmpowered);
|
||||||
|
this.add(InitItems.itemCrystalShard);
|
||||||
|
|
||||||
this.add(InitItems.itemJams);
|
this.add(InitItems.itemJams);
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,11 @@ import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
|
||||||
import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot;
|
import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockDirectional;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
@ -35,6 +37,15 @@ import java.util.Random;
|
||||||
|
|
||||||
public class WorldGenLushCaves{
|
public class WorldGenLushCaves{
|
||||||
|
|
||||||
|
public static final Block[] CRYSTAL_CLUSTERS = new Block[]{
|
||||||
|
InitBlocks.blockCrystalClusterRedstone,
|
||||||
|
InitBlocks.blockCrystalClusterLapis,
|
||||||
|
InitBlocks.blockCrystalClusterDiamond,
|
||||||
|
InitBlocks.blockCrystalClusterCoal,
|
||||||
|
InitBlocks.blockCrystalClusterEmerald,
|
||||||
|
InitBlocks.blockCrystalClusterIron
|
||||||
|
};
|
||||||
|
|
||||||
public boolean generate(World world, Random rand, BlockPos position, StructureBoundingBox blockRegion){
|
public boolean generate(World world, Random rand, BlockPos position, StructureBoundingBox blockRegion){
|
||||||
this.generateCave(world, position, rand, blockRegion);
|
this.generateCave(world, position, rand, blockRegion);
|
||||||
return true;
|
return true;
|
||||||
|
@ -50,10 +61,10 @@ public class WorldGenLushCaves{
|
||||||
spheresBox.maxZ += 7;
|
spheresBox.maxZ += 7;
|
||||||
for(int i = 0; i <= spheres; i++){
|
for(int i = 0; i <= spheres; i++){
|
||||||
//center already is random value within population area
|
//center already is random value within population area
|
||||||
this.makeSphereWithGrassFloor(world, center.add(rand.nextInt(11)-5, rand.nextInt(7)-3, rand.nextInt(11)-5), rand.nextInt(3)+5, spheresBox);
|
this.makeSphereWithGrassFloor(world, center.add(rand.nextInt(11)-5, rand.nextInt(7)-3, rand.nextInt(11)-5), rand.nextInt(3)+5, spheresBox, rand);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.genTreesAndTallGrass(world, center, 11, spheres*3, rand, chunkRegion);
|
this.genTreesAndTallGrass(world, center, 11, spheres*2, rand, chunkRegion);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void genTreesAndTallGrass(World world, BlockPos center, int radius, int amount, Random rand, StructureBoundingBox box){
|
private void genTreesAndTallGrass(World world, BlockPos center, int radius, int amount, Random rand, StructureBoundingBox box){
|
||||||
|
@ -61,10 +72,27 @@ public class WorldGenLushCaves{
|
||||||
for(double x = -radius; x < radius; x++){
|
for(double x = -radius; x < radius; x++){
|
||||||
for(double y = -radius; y < radius; y++){
|
for(double y = -radius; y < radius; y++){
|
||||||
for(double z = -radius; z < radius; z++){
|
for(double z = -radius; z < radius; z++){
|
||||||
if(rand.nextDouble() >= 0.5D){
|
BlockPos pos = center.add(x, y, z);
|
||||||
BlockPos pos = center.add(x, y, z);
|
if(box.isVecInside(pos)){
|
||||||
if(box.isVecInside(pos) && world.getBlockState(pos).getBlock() == Blocks.GRASS){
|
if(rand.nextDouble() >= 0.5D){
|
||||||
possiblePoses.add(pos);
|
if(world.getBlockState(pos).getBlock() == Blocks.GRASS){
|
||||||
|
possiblePoses.add(pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(rand.nextInt(20) == 0){
|
||||||
|
EnumFacing[] values = EnumFacing.values();
|
||||||
|
EnumFacing side = values[rand.nextInt(values.length)];
|
||||||
|
BlockPos posSide = pos.offset(side);
|
||||||
|
|
||||||
|
if(!this.checkIndestructable(world, posSide)){
|
||||||
|
IBlockState state = world.getBlockState(pos);
|
||||||
|
IBlockState stateSide = world.getBlockState(posSide);
|
||||||
|
|
||||||
|
if(state.getBlock().isAir(state, world, pos) && stateSide.getBlock().isSideSolid(stateSide, world, posSide, side.getOpposite())){
|
||||||
|
Block block = CRYSTAL_CLUSTERS[rand.nextInt(CRYSTAL_CLUSTERS.length)];
|
||||||
|
world.setBlockState(pos, block.getDefaultState().withProperty(BlockDirectional.FACING, side.getOpposite()), 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +146,7 @@ public class WorldGenLushCaves{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void makeSphereWithGrassFloor(World world, BlockPos center, int radius, StructureBoundingBox boundingBox){
|
private void makeSphereWithGrassFloor(World world, BlockPos center, int radius, StructureBoundingBox boundingBox, Random rand){
|
||||||
for(double x = -radius; x < radius; x++){
|
for(double x = -radius; x < radius; x++){
|
||||||
for(double y = -radius; y < radius; y++){
|
for(double y = -radius; y < radius; y++){
|
||||||
for(double z = -radius; z < radius; z++){
|
for(double z = -radius; z < radius; z++){
|
||||||
|
@ -137,11 +165,12 @@ public class WorldGenLushCaves{
|
||||||
for(double z = -radius; z < radius; z++){
|
for(double z = -radius; z < radius; z++){
|
||||||
for(double y = -radius; y <= -3; y++){
|
for(double y = -radius; y <= -3; y++){
|
||||||
BlockPos pos = center.add(x, y, z);
|
BlockPos pos = center.add(x, y, z);
|
||||||
if(boundingBox.isVecInside(pos)){
|
if(boundingBox.isVecInside(pos) && !this.checkIndestructable(world, pos)){
|
||||||
IBlockState state = world.getBlockState(pos);
|
IBlockState state = world.getBlockState(pos);
|
||||||
BlockPos posUp = pos.up();
|
BlockPos posUp = pos.up();
|
||||||
IBlockState stateUp = world.getBlockState(posUp);
|
|
||||||
if(!this.checkIndestructable(world, pos) && !this.checkIndestructable(world, posUp)){
|
if(!this.checkIndestructable(world, posUp)){
|
||||||
|
IBlockState stateUp = world.getBlockState(posUp);
|
||||||
if(!state.getBlock().isAir(state, world, pos) && stateUp.getBlock().isAir(stateUp, world, posUp)){
|
if(!state.getBlock().isAir(state, world, pos) && stateUp.getBlock().isAir(stateUp, world, posUp)){
|
||||||
world.setBlockState(pos, Blocks.GRASS.getDefaultState());
|
world.setBlockState(pos, Blocks.GRASS.getDefaultState());
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,10 +196,12 @@ public final class InitItems{
|
||||||
public static Item itemLaserUpgradeInvisibility;
|
public static Item itemLaserUpgradeInvisibility;
|
||||||
public static Item itemLaserUpgradeRange;
|
public static Item itemLaserUpgradeRange;
|
||||||
public static Item itemInfraredGoggles;
|
public static Item itemInfraredGoggles;
|
||||||
|
public static Item itemCrystalShard;
|
||||||
|
|
||||||
public static void init(){
|
public static void init(){
|
||||||
ModUtil.LOGGER.info("Initializing Items...");
|
ModUtil.LOGGER.info("Initializing Items...");
|
||||||
|
|
||||||
|
itemCrystalShard = new ItemCrystalShard("item_crystal_shard");
|
||||||
itemInfraredGoggles = new ItemInfraredGoggles("item_infrared_goggles");
|
itemInfraredGoggles = new ItemInfraredGoggles("item_infrared_goggles");
|
||||||
itemLaserUpgradeRange = new ItemLaserRelayUpgrade("item_laser_upgrade_range");
|
itemLaserUpgradeRange = new ItemLaserRelayUpgrade("item_laser_upgrade_range");
|
||||||
itemLaserUpgradeInvisibility = new ItemLaserRelayUpgrade("item_laser_upgrade_invisibility");
|
itemLaserUpgradeInvisibility = new ItemLaserRelayUpgrade("item_laser_upgrade_invisibility");
|
||||||
|
|
|
@ -113,7 +113,7 @@ public class ItemAllToolAA extends ItemToolAA implements IColorProvidingItem{
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
@Override
|
@Override
|
||||||
public IItemColor getColor(){
|
public IItemColor getItemColor(){
|
||||||
return new IItemColor(){
|
return new IItemColor(){
|
||||||
@Override
|
@Override
|
||||||
public int getColorFromItemstack(ItemStack stack, int pass){
|
public int getColorFromItemstack(ItemStack stack, int pass){
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
/*
|
||||||
|
* This file ("ItemCrystalShard.java") is part of the Actually Additions mod for Minecraft.
|
||||||
|
* It is created and owned by Ellpeck and distributed
|
||||||
|
* under the Actually Additions License to be found at
|
||||||
|
* http://ellpeck.de/actaddlicense
|
||||||
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
||||||
|
*
|
||||||
|
* © 2015-2017 Ellpeck
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.ellpeck.actuallyadditions.mod.items;
|
||||||
|
|
||||||
|
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.blocks.BlockCrystal;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingItem;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
|
||||||
|
import net.minecraft.client.renderer.color.IItemColor;
|
||||||
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
|
import net.minecraft.item.EnumRarity;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.NonNullList;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
public class ItemCrystalShard extends ItemBase implements IColorProvidingItem{
|
||||||
|
|
||||||
|
public ItemCrystalShard(String name){
|
||||||
|
super(name);
|
||||||
|
this.setHasSubtypes(true);
|
||||||
|
this.setMaxDamage(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMetadata(int damage){
|
||||||
|
return damage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUnlocalizedName(ItemStack stack){
|
||||||
|
return stack.getItemDamage() >= BlockCrystal.ALL_CRYSTALS.length ? StringUtil.BUGGED_ITEM_NAME : this.getUnlocalizedName()+"_"+BlockCrystal.ALL_CRYSTALS[stack.getItemDamage()].name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EnumRarity getRarity(ItemStack stack){
|
||||||
|
return stack.getItemDamage() >= BlockCrystal.ALL_CRYSTALS.length ? EnumRarity.COMMON : BlockCrystal.ALL_CRYSTALS[stack.getItemDamage()].rarity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void getSubItems(Item item, CreativeTabs tab, NonNullList list){
|
||||||
|
for(int j = 0; j < BlockCrystal.ALL_CRYSTALS.length; j++){
|
||||||
|
list.add(new ItemStack(this, 1, j));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void registerRendering(){
|
||||||
|
for(int i = 0; i < BlockCrystal.ALL_CRYSTALS.length; i++){
|
||||||
|
ActuallyAdditions.proxy.addRenderRegister(new ItemStack(this, 1, i), this.getRegistryName(), "inventory");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IItemColor getItemColor(){
|
||||||
|
return new IItemColor(){
|
||||||
|
@Override
|
||||||
|
public int getColorFromItemstack(ItemStack stack, int tintIndex){
|
||||||
|
int damage = stack.getItemDamage();
|
||||||
|
if(damage >= 0 && damage < BlockCrystal.ALL_CRYSTALS.length){
|
||||||
|
return BlockCrystal.ALL_CRYSTALS[damage].clusterColor;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
|
@ -67,7 +67,7 @@ public class ItemDust extends ItemBase implements IColorProvidingItem{
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
@Override
|
@Override
|
||||||
public IItemColor getColor(){
|
public IItemColor getItemColor(){
|
||||||
return new IItemColor(){
|
return new IItemColor(){
|
||||||
@Override
|
@Override
|
||||||
public int getColorFromItemstack(ItemStack stack, int pass){
|
public int getColorFromItemstack(ItemStack stack, int pass){
|
||||||
|
|
|
@ -107,7 +107,7 @@ public class ItemJams extends ItemFoodBase implements IColorProvidingItem{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public IItemColor getColor(){
|
public IItemColor getItemColor(){
|
||||||
return new IItemColor(){
|
return new IItemColor(){
|
||||||
@Override
|
@Override
|
||||||
public int getColorFromItemstack(ItemStack stack, int pass){
|
public int getColorFromItemstack(ItemStack stack, int pass){
|
||||||
|
|
|
@ -162,7 +162,7 @@ public class ItemPotionRing extends ItemBase implements IColorProvidingItem, IDi
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public IItemColor getColor(){
|
public IItemColor getItemColor(){
|
||||||
return new IItemColor(){
|
return new IItemColor(){
|
||||||
@Override
|
@Override
|
||||||
public int getColorFromItemstack(ItemStack stack, int tintIndex){
|
public int getColorFromItemstack(ItemStack stack, int tintIndex){
|
||||||
|
|
|
@ -16,21 +16,23 @@ import net.minecraft.util.IStringSerializable;
|
||||||
|
|
||||||
public enum TheCrystals implements IStringSerializable{
|
public enum TheCrystals implements IStringSerializable{
|
||||||
|
|
||||||
REDSTONE("red", Util.CRYSTAL_RED_RARITY, 158F/255F, 43F/255F, 39F/255F),
|
REDSTONE("red", Util.CRYSTAL_RED_RARITY, 0xFF2F21, 158F/255F, 43F/255F, 39F/255F),
|
||||||
LAPIS("blue", Util.CRYSTAL_BLUE_RARITY, 37F/255F, 49F/255F, 147F/255F),
|
LAPIS("blue", Util.CRYSTAL_BLUE_RARITY, 0x5171FF, 37F/255F, 49F/255F, 147F/255F),
|
||||||
DIAMOND("light_blue", Util.CRYSTAL_LIGHT_BLUE_RARITY, 99F/255F, 135F/255F, 210F/255F),
|
DIAMOND("light_blue", Util.CRYSTAL_LIGHT_BLUE_RARITY, 0x35F1FF, 99F/255F, 135F/255F, 210F/255F),
|
||||||
COAL("black", Util.CRYSTAL_BLACK_RARITY, 0.2F, 0.2F, 0.2F),
|
COAL("black", Util.CRYSTAL_BLACK_RARITY, 0x434442, 0.2F, 0.2F, 0.2F),
|
||||||
EMERALD("green", Util.CRYSTAL_GREEN_RARITY, 54F/255F, 75F/255F, 24F/255F),
|
EMERALD("green", Util.CRYSTAL_GREEN_RARITY, 0x44E033, 54F/255F, 75F/255F, 24F/255F),
|
||||||
IRON("white", Util.CRYSTAL_WHITE_RARITY, 0.8F, 0.8F, 0.8F);
|
IRON("white", Util.CRYSTAL_WHITE_RARITY, 0xCEDDD4, 0.8F, 0.8F, 0.8F);
|
||||||
|
|
||||||
public final String name;
|
public final String name;
|
||||||
public final EnumRarity rarity;
|
public final EnumRarity rarity;
|
||||||
public final float[] conversionColorParticles;
|
public final float[] conversionColorParticles;
|
||||||
|
public final int clusterColor;
|
||||||
|
|
||||||
TheCrystals(String name, EnumRarity rarity, float... conversionColorParticles){
|
TheCrystals(String name, EnumRarity rarity, int clusterColor, float... conversionColorParticles){
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.rarity = rarity;
|
this.rarity = rarity;
|
||||||
this.conversionColorParticles = conversionColorParticles;
|
this.conversionColorParticles = conversionColorParticles;
|
||||||
|
this.clusterColor = clusterColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -18,6 +18,7 @@ import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
|
||||||
import de.ellpeck.actuallyadditions.mod.misc.special.SpecialRenderInit;
|
import de.ellpeck.actuallyadditions.mod.misc.special.SpecialRenderInit;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.*;
|
import de.ellpeck.actuallyadditions.mod.tile.*;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.FluidStateMapper;
|
import de.ellpeck.actuallyadditions.mod.util.FluidStateMapper;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingBlock;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingItem;
|
import de.ellpeck.actuallyadditions.mod.util.IColorProvidingItem;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -43,6 +44,7 @@ import java.util.Map;
|
||||||
public class ClientProxy implements IProxy{
|
public class ClientProxy implements IProxy{
|
||||||
|
|
||||||
private static final List<Item> COLOR_PRODIVIDING_ITEMS_FOR_REGISTERING = new ArrayList<Item>();
|
private static final List<Item> COLOR_PRODIVIDING_ITEMS_FOR_REGISTERING = new ArrayList<Item>();
|
||||||
|
private static final List<Block> COLOR_PRODIVIDING_BLOCKS_FOR_REGISTERING = new ArrayList<Block>();
|
||||||
private static final Map<ItemStack, ModelResourceLocation> MODEL_LOCATIONS_FOR_REGISTERING = new HashMap<ItemStack, ModelResourceLocation>();
|
private static final Map<ItemStack, ModelResourceLocation> MODEL_LOCATIONS_FOR_REGISTERING = new HashMap<ItemStack, ModelResourceLocation>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -98,7 +100,16 @@ public class ClientProxy implements IProxy{
|
||||||
|
|
||||||
for(Item item : COLOR_PRODIVIDING_ITEMS_FOR_REGISTERING){
|
for(Item item : COLOR_PRODIVIDING_ITEMS_FOR_REGISTERING){
|
||||||
if(item instanceof IColorProvidingItem){
|
if(item instanceof IColorProvidingItem){
|
||||||
Minecraft.getMinecraft().getItemColors().registerItemColorHandler(((IColorProvidingItem)item).getColor(), item);
|
Minecraft.getMinecraft().getItemColors().registerItemColorHandler(((IColorProvidingItem)item).getItemColor(), item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Block block : COLOR_PRODIVIDING_BLOCKS_FOR_REGISTERING){
|
||||||
|
if(block instanceof IColorProvidingBlock){
|
||||||
|
Minecraft.getMinecraft().getBlockColors().registerBlockColorHandler(((IColorProvidingBlock)block).getBlockColor(), block);
|
||||||
|
}
|
||||||
|
if(block instanceof IColorProvidingItem){
|
||||||
|
Minecraft.getMinecraft().getItemColors().registerItemColorHandler(((IColorProvidingItem)block).getItemColor(), block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,6 +131,11 @@ public class ClientProxy implements IProxy{
|
||||||
COLOR_PRODIVIDING_ITEMS_FOR_REGISTERING.add(item);
|
COLOR_PRODIVIDING_ITEMS_FOR_REGISTERING.add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addColoredBlock(Block block){
|
||||||
|
COLOR_PRODIVIDING_BLOCKS_FOR_REGISTERING.add(block);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityPlayer getCurrentPlayer(){
|
public EntityPlayer getCurrentPlayer(){
|
||||||
return Minecraft.getMinecraft().player;
|
return Minecraft.getMinecraft().player;
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.proxy;
|
package de.ellpeck.actuallyadditions.mod.proxy;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -30,5 +31,8 @@ public interface IProxy{
|
||||||
|
|
||||||
void addColoredItem(Item item);
|
void addColoredItem(Item item);
|
||||||
|
|
||||||
|
void addColoredBlock(Block block);
|
||||||
|
|
||||||
EntityPlayer getCurrentPlayer();
|
EntityPlayer getCurrentPlayer();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
package de.ellpeck.actuallyadditions.mod.proxy;
|
package de.ellpeck.actuallyadditions.mod.proxy;
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -46,6 +47,11 @@ public class ServerProxy implements IProxy{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addColoredBlock(Block block){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityPlayer getCurrentPlayer(){
|
public EntityPlayer getCurrentPlayer(){
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
* This file ("IColorProvidingBlock.java") is part of the Actually Additions mod for Minecraft.
|
||||||
|
* It is created and owned by Ellpeck and distributed
|
||||||
|
* under the Actually Additions License to be found at
|
||||||
|
* http://ellpeck.de/actaddlicense
|
||||||
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
||||||
|
*
|
||||||
|
* © 2015-2017 Ellpeck
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.ellpeck.actuallyadditions.mod.util;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.color.IBlockColor;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
public interface IColorProvidingBlock{
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
IBlockColor getBlockColor();
|
||||||
|
|
||||||
|
}
|
|
@ -17,6 +17,6 @@ import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
public interface IColorProvidingItem{
|
public interface IColorProvidingItem{
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
IItemColor getColor();
|
IItemColor getItemColor();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,10 @@ public final class ItemUtil{
|
||||||
|
|
||||||
IMCHandler.doBlockIMC(block);
|
IMCHandler.doBlockIMC(block);
|
||||||
|
|
||||||
|
if(block instanceof IColorProvidingBlock){
|
||||||
|
ActuallyAdditions.proxy.addColoredBlock(block);
|
||||||
|
}
|
||||||
|
|
||||||
addUnderscoreNameToMapUnderscorelessName(block.getRegistryName());
|
addUnderscoreNameToMapUnderscorelessName(block.getRegistryName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "actuallyadditions:block_crystal_cluster",
|
||||||
|
"textures": {
|
||||||
|
"particle": "actuallyadditions:blocks/block_crystal_cluster"
|
||||||
|
},
|
||||||
|
"transform": "forge:default-block"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"normal": [{}],
|
||||||
|
"inventory": [{}],
|
||||||
|
"facing": {
|
||||||
|
"down": { "x": 180 },
|
||||||
|
"up": {},
|
||||||
|
"north": { "x": 90 },
|
||||||
|
"south": { "x": 270 },
|
||||||
|
"west": { "x": 90, "y": 270 },
|
||||||
|
"east": { "x": 270, "y": 270 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "actuallyadditions:block_crystal_cluster",
|
||||||
|
"textures": {
|
||||||
|
"particle": "actuallyadditions:blocks/block_crystal_cluster"
|
||||||
|
},
|
||||||
|
"transform": "forge:default-block"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"normal": [{}],
|
||||||
|
"inventory": [{}],
|
||||||
|
"facing": {
|
||||||
|
"down": { "x": 180 },
|
||||||
|
"up": {},
|
||||||
|
"north": { "x": 90 },
|
||||||
|
"south": { "x": 270 },
|
||||||
|
"west": { "x": 90, "y": 270 },
|
||||||
|
"east": { "x": 270, "y": 270 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "actuallyadditions:block_crystal_cluster",
|
||||||
|
"textures": {
|
||||||
|
"particle": "actuallyadditions:blocks/block_crystal_cluster"
|
||||||
|
},
|
||||||
|
"transform": "forge:default-block"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"normal": [{}],
|
||||||
|
"inventory": [{}],
|
||||||
|
"facing": {
|
||||||
|
"down": { "x": 180 },
|
||||||
|
"up": {},
|
||||||
|
"north": { "x": 90 },
|
||||||
|
"south": { "x": 270 },
|
||||||
|
"west": { "x": 90, "y": 270 },
|
||||||
|
"east": { "x": 270, "y": 270 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "actuallyadditions:block_crystal_cluster",
|
||||||
|
"textures": {
|
||||||
|
"particle": "actuallyadditions:blocks/block_crystal_cluster"
|
||||||
|
},
|
||||||
|
"transform": "forge:default-block"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"normal": [{}],
|
||||||
|
"inventory": [{}],
|
||||||
|
"facing": {
|
||||||
|
"down": { "x": 180 },
|
||||||
|
"up": {},
|
||||||
|
"north": { "x": 90 },
|
||||||
|
"south": { "x": 270 },
|
||||||
|
"west": { "x": 90, "y": 270 },
|
||||||
|
"east": { "x": 270, "y": 270 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "actuallyadditions:block_crystal_cluster",
|
||||||
|
"textures": {
|
||||||
|
"particle": "actuallyadditions:blocks/block_crystal_cluster"
|
||||||
|
},
|
||||||
|
"transform": "forge:default-block"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"normal": [{}],
|
||||||
|
"inventory": [{}],
|
||||||
|
"facing": {
|
||||||
|
"down": { "x": 180 },
|
||||||
|
"up": {},
|
||||||
|
"north": { "x": 90 },
|
||||||
|
"south": { "x": 270 },
|
||||||
|
"west": { "x": 90, "y": 270 },
|
||||||
|
"east": { "x": 270, "y": 270 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "actuallyadditions:block_crystal_cluster",
|
||||||
|
"textures": {
|
||||||
|
"particle": "actuallyadditions:blocks/block_crystal_cluster"
|
||||||
|
},
|
||||||
|
"transform": "forge:default-block"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"normal": [{}],
|
||||||
|
"inventory": [{}],
|
||||||
|
"facing": {
|
||||||
|
"down": { "x": 180 },
|
||||||
|
"up": {},
|
||||||
|
"north": { "x": 90 },
|
||||||
|
"south": { "x": 270 },
|
||||||
|
"west": { "x": 90, "y": 270 },
|
||||||
|
"east": { "x": 270, "y": 270 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -239,6 +239,12 @@ tile.actuallyadditions.block_distributor_item.name=Item Distributor
|
||||||
tile.actuallyadditions.block_bio_reactor.name=Bio Reactor
|
tile.actuallyadditions.block_bio_reactor.name=Bio Reactor
|
||||||
tile.actuallyadditions.block_farmer.name=Farmer
|
tile.actuallyadditions.block_farmer.name=Farmer
|
||||||
tile.actuallyadditions.block_battery_box.name=Battery Box
|
tile.actuallyadditions.block_battery_box.name=Battery Box
|
||||||
|
tile.actuallyadditions.block_crystal_cluster_redstone.name=Red Crystal Cluster
|
||||||
|
tile.actuallyadditions.block_crystal_cluster_lapis.name=Blue Crystal Cluster
|
||||||
|
tile.actuallyadditions.block_crystal_cluster_diamond.name=Light Blue Crystal Cluster
|
||||||
|
tile.actuallyadditions.block_crystal_cluster_coal.name=Black Crystal Cluster
|
||||||
|
tile.actuallyadditions.block_crystal_cluster_emerald.name=Green Crystal Cluster
|
||||||
|
tile.actuallyadditions.block_crystal_cluster_iron.name=White Crystal Cluster
|
||||||
|
|
||||||
#ESD
|
#ESD
|
||||||
tile.actuallyadditions.block_inputter.name=ESD
|
tile.actuallyadditions.block_inputter.name=ESD
|
||||||
|
@ -523,6 +529,12 @@ item.actuallyadditions.item_filling_wand.name=Handheld Filler
|
||||||
item.actuallyadditions.item_laser_upgrade_invisibility.name=Laser Relay Modifier: Invisibility
|
item.actuallyadditions.item_laser_upgrade_invisibility.name=Laser Relay Modifier: Invisibility
|
||||||
item.actuallyadditions.item_infrared_goggles.name=Infrared Goggles
|
item.actuallyadditions.item_infrared_goggles.name=Infrared Goggles
|
||||||
item.actuallyadditions.item_laser_upgrade_range.name=Laser Relay Modifier: Range
|
item.actuallyadditions.item_laser_upgrade_range.name=Laser Relay Modifier: Range
|
||||||
|
item.actuallyadditions.item_crystal_shard_red.name=Red Crystal Shard
|
||||||
|
item.actuallyadditions.item_crystal_shard_blue.name=Blue Crystal Shard
|
||||||
|
item.actuallyadditions.item_crystal_shard_light_blue.name=Light Blue Crystal Shard
|
||||||
|
item.actuallyadditions.item_crystal_shard_black.name=Black Crystal Shard
|
||||||
|
item.actuallyadditions.item_crystal_shard_green.name=Green Crystal Shard
|
||||||
|
item.actuallyadditions.item_crystal_shard_white.name=White Crystal Shard
|
||||||
|
|
||||||
#Tooltips
|
#Tooltips
|
||||||
tooltip.actuallyadditions.onSuffix.desc=On
|
tooltip.actuallyadditions.onSuffix.desc=On
|
||||||
|
|
|
@ -0,0 +1,207 @@
|
||||||
|
{
|
||||||
|
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
|
||||||
|
"textures": {
|
||||||
|
"0": "actuallyadditions:blocks/block_crystal_cluster"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 4.0, 1.0, 0.0 ],
|
||||||
|
"to": [ 7.0, 7.0, 7.0 ],
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 6.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 7.0, 6.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 7.0 ], "tintindex": 0 },
|
||||||
|
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 7.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 11.0, 0.0, 0.0 ],
|
||||||
|
"to": [ 18.0, 4.0, 9.0 ],
|
||||||
|
"rotation": { "origin": [ 11.0, 6.0, 0.0 ], "axis": "y", "angle": -45.0 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 7.0, 4.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 9.0, 4.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 7.0, 9.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 7.900000013411045, 0.0, 7.899999998509884 ],
|
||||||
|
"to": [ 13.900000013411045, 8.0, 13.899999998509884 ],
|
||||||
|
"rotation": { "origin": [ 13.0, 8.0, 8.0 ], "axis": "y", "angle": -22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 6.0, 8.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 6.0, 8.0 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 6.0, 8.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 6.0, 8.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 6.0, 6.0 ], "tintindex": 0 },
|
||||||
|
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 6.0, 6.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 1.0, 2.0, 8.0 ],
|
||||||
|
"to": [ 10.700000010430813, 6.0, 13.899999998509884 ],
|
||||||
|
"rotation": { "origin": [ 4.0, 6.0, 8.0 ], "axis": "x", "angle": 22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 9.700000010430813, 4.0 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 9.700000010430813, 4.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 5.899999998509884, 4.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 9.700000010430813, 5.899999998509884 ], "tintindex": 0 },
|
||||||
|
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 9.700000010430813, 5.899999998509884 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 1.0, 0.0, 8.0 ],
|
||||||
|
"to": [ 13.0, 3.0, 16.600000008940697 ],
|
||||||
|
"rotation": { "origin": [ 1.0, 6.0, 8.0 ], "axis": "y", "angle": 22.5 },
|
||||||
|
"faces": {
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 8.600000008940697, 3.0 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 12.0, 3.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 8.600000008940697, 3.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 12.0, 8.600000008940697 ], "tintindex": 0},
|
||||||
|
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 12.0, 8.600000008940697 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 5.799999997019768, 4.899999983608723, -2.0 ],
|
||||||
|
"to": [ 9.799999997019768, 19.899999983608723, 2.0 ],
|
||||||
|
"rotation": { "origin": [ 1.0, 6.0, 1.0 ], "axis": "y", "angle": -22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 4.0, 15.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 4.0, 15.0 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 4.0, 15.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 4.0, 15.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 4.0, 4.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 1.5000000670552254, 0.9000000134110451, 0.0 ],
|
||||||
|
"to": [ 4.000000059604645, 7.0, 8.0 ],
|
||||||
|
"rotation": { "origin": [ 4.0, 7.0, 8.0 ], "axis": "z", "angle": 22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 2.4999999925494194, 6.099999986588955 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 8.0, 6.099999986588955 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 2.4999999925494194, 8.0 ], "tintindex": 0 },
|
||||||
|
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 2.4999999925494194, 8.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 1.0000000149011612, 0.0, 4.0 ],
|
||||||
|
"to": [ 3.299999989569187, 4.099999986588955, 8.0 ],
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 2.299999974668026, 4.099999986588955 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 4.0, 4.099999986588955 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 2.299999974668026, 4.0 ], "tintindex": 0 },
|
||||||
|
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 2.299999974668026, 4.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 5.0, 4.0, 4.399999991059303 ],
|
||||||
|
"to": [ 8.0, 14.0, 7.399999991059303 ],
|
||||||
|
"rotation": { "origin": [ 6.799999997019768, 7.000000014901161, 0.9000000134110451 ], "axis": "z", "angle": 45.0 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 3.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 8.100000001490116, 7.999999985098839, 9.0 ],
|
||||||
|
"to": [ 11.100000001490116, 19.49999999254942, 12.0 ],
|
||||||
|
"rotation": { "origin": [ 8.099999986588955, 8.000000014901161, 11.000000014901161 ], "axis": "z", "angle": -22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 11.50000000745058 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 11.50000000745058 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 11.50000000745058 ], "tintindex": 0},
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 11.50000000745058 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 3.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 5.900000013411045, 4.0, 6.799999997019768 ],
|
||||||
|
"to": [ 8.900000013411045, 14.0, 9.799999997019768 ],
|
||||||
|
"rotation": { "origin": [ 8.0, 7.100000016391277, 4.900000013411045 ], "axis": "x", "angle": 22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 3.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 10.0, 3.0, 3.0 ],
|
||||||
|
"to": [ 13.0, 11.0, 8.0 ],
|
||||||
|
"rotation": { "origin": [ 13.0, 4.0, 4.0 ], "axis": "z", "angle": -22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 8.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 5.0, 8.0 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 8.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 5.0, 8.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 5.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 1.4901161193847656E-8, 0.0, -1.5999999940395355 ],
|
||||||
|
"to": [ 5.799999997019768, 2.099999986588955, 4.000000029802322 ],
|
||||||
|
"rotation": { "origin": [ 0.0, 8.0, 4.0 ], "axis": "y", "angle": -45.0 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 5.799999982118607, 2.099999986588955 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 5.799999982118607, 2.099999986588955 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 5.600000023841858, 2.099999986588955 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 5.799999982118607, 5.600000023841858 ], "tintindex": 0 },
|
||||||
|
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 5.799999982118607, 5.600000023841858 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 4.0, 0.0, 0.8999999985098839 ],
|
||||||
|
"to": [ 7.0, 6.0, 7.899999998509884 ],
|
||||||
|
"rotation": { "origin": [ 7.200000002980232, 8.0, -1.0 ], "axis": "y", "angle": 22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 6.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 7.0, 6.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 7.0 ], "tintindex": 0 },
|
||||||
|
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 7.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 7.300000004470348, 0.0, 0.0 ],
|
||||||
|
"to": [ 11.300000004470348, 5.0, 7.0 ],
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 4.0, 5.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 7.0, 5.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 7.0, 5.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 4.0, 7.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Cube",
|
||||||
|
"from": [ 1.900000013411045, 5.0, 10.799999997019768 ],
|
||||||
|
"to": [ 4.900000013411045, 15.0, 13.799999997019768 ],
|
||||||
|
"rotation": { "origin": [ 13.0, 18.100000016391277, -0.3999999910593033 ], "axis": "x", "angle": 22.5 },
|
||||||
|
"faces": {
|
||||||
|
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 10.0 ], "tintindex": 0 },
|
||||||
|
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 3.0, 3.0 ], "tintindex": 0 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "actuallyadditions:item/standard_item",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "actuallyadditions:items/item_crystal_shard"
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 3 KiB |
Binary file not shown.
After Width: | Height: | Size: 311 B |
Loading…
Reference in a new issue