use of net.tropicraft.core.common.block.BlockBongoDrum in project Tropicraft by Tropicraft.
the class EntityAIPartyTime method updateTask.
@Override
public void updateTask() {
super.updateTask();
boolean isClose = false;
BlockPos blockposGoal = null;
if (this.entityObj.listPosDrums.size() > assignedDrumIndex) {
blockposGoal = entityObj.listPosDrums.get(assignedDrumIndex);
}
if (entityObj.world.getTotalWorldTime() % 200 == 0) {
if (this.entityObj.listPosDrums.size() > 0) {
assignedDrumIndex = entityObj.world.rand.nextInt(entityObj.listPosDrums.size());
}
// if (wasClose) {
bangDrum = entityObj.world.rand.nextBoolean();
// }
}
if (blockposGoal == null) {
resetTask();
return;
}
// prevent walking onto source
double dist = entityObj.getPositionVector().distanceTo(new Vec3d(blockposGoal.getX(), blockposGoal.getY(), blockposGoal.getZ()));
if (dist < 8D) {
wasClose = true;
}
if (dist < 3D && entityObj.onGround) {
isClose = true;
entityObj.getNavigator().clearPath();
if (!bangDrum) {
// entityObj.setSitting(true);
entityObj.setDancing(true);
this.entityObj.getJumpHelper().setJumping();
this.entityObj.rotationYaw = entityObj.world.rand.nextInt(360);
} else {
entityObj.setDancing(false);
if (true || lookUpdateTimer <= 0) {
entityObj.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, ItemStack.EMPTY);
// keep for testing, was neat sounding
// entityObj.world.rand.nextInt(10) + 1;
int amp = 1;
int rate = 4 + (entityObj.getEntityId() % 7);
int index1 = 0;
HashMap<Integer, List<Integer>> lookupStateToSequence = new HashMap<>();
List<Integer> listDelays = Lists.newArrayList(9, 3, 3, 3, 6);
lookupStateToSequence.put(index1++, listDelays);
lookupStateToSequence.put(index1++, listDelays);
lookupStateToSequence.put(index1++, listDelays);
lookupStateToSequence.put(index1++, Lists.newArrayList(9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 12));
int nightStart = 12500;
int nightEnd = 23500;
int phases = 4;
int phaseSplit = (nightEnd - nightStart) / phases;
int timeOfDay = (int) (entityObj.world.getWorldTime() % 24000);
int nightTime = (timeOfDay - nightStart);
if (nightTime > phaseSplit * 3) {
amp = 1;
} else if (nightTime > phaseSplit * 2) {
amp = 2;
} else if (nightTime > phaseSplit * 1) {
amp = 3;
} else {
amp = 4;
}
if (entityObj.hitIndex2 >= lookupStateToSequence.get(entityObj.hitIndex).size()) {
entityObj.hitIndex2 = 0;
entityObj.hitIndex++;
}
if (entityObj.hitIndex >= lookupStateToSequence.size()) {
entityObj.hitIndex = 0;
}
rate = lookupStateToSequence.get(entityObj.hitIndex).get(entityObj.hitIndex2);
if (entityObj.hitDelay > 0) {
entityObj.hitDelay--;
}
boolean perEntDelay = false;
boolean hit = false;
if (perEntDelay) {
if (entityObj.hitDelay <= 0) {
entityObj.hitDelay = (amp * rate);
hit = true;
}
} else {
hit = entityObj.world.getTotalWorldTime() % (amp * rate) == 0;
}
if (hit) {
// System.out.println("stage: " + entityObj.hitIndex + " - " + entityObj.hitIndex2);
entityObj.hitIndex2++;
IBlockState state = entityObj.world.getBlockState(blockposGoal);
if (state.getBlock() instanceof BlockBongoDrum) {
// ((BlockBongoDrum) state.getBlock()).playBongoSound(entityObj.world, null, blockposGoal, state);
TropicraftBongos bongo = ((BlockBongoDrum) state.getBlock()).getVariant(state);
float pitch = (entityObj.world.rand.nextFloat() * 1F) + 0F;
entityObj.world.playSound(null, blockposGoal.getX(), blockposGoal.getY() + 0.5D, blockposGoal.getZ(), bongo.getSoundEvent(), SoundCategory.BLOCKS, 6.0F, pitch);
entityObj.swingArm(EnumHand.MAIN_HAND);
}
}
entityObj.syncBPM();
}
this.entityObj.getLookHelper().setLookPosition(blockposGoal.getX() + randXPos, blockposGoal.getY() + randYPos + 1D, blockposGoal.getZ() + randZPos, 8F, 8F);
}
} else {
wasClose = false;
entityObj.setSitting(false);
}
if (!isClose) {
entityObj.setDancing(true);
if ((this.entityObj.getNavigator().noPath() || walkingTimeout <= 0) && repathPentalty <= 0) {
int i = blockposGoal.getX();
int j = blockposGoal.getY();
int k = blockposGoal.getZ();
boolean success = false;
if (this.entityObj.getDistanceSq(blockposGoal) > 256.0D) {
Vec3d vec3d = RandomPositionGenerator.findRandomTargetBlockTowards(this.entityObj, 14, 3, new Vec3d((double) i + 0.5D, (double) j, (double) k + 0.5D));
if (vec3d != null) {
success = this.entityObj.getNavigator().tryMoveToXYZ(vec3d.x, vec3d.y, vec3d.z, 1.0D);
} else {
success = Util.tryMoveToXYZLongDist(this.entityObj, new BlockPos(i, j, k), 1);
// System.out.println("success? " + success);
}
} else {
success = this.entityObj.getNavigator().tryMoveToXYZ((double) i + 0.5D, (double) j, (double) k + 0.5D, 1.0D);
}
if (!success) {
repathPentalty = 40;
} else {
walkingTimeout = walkingTimeoutMax;
}
} else {
if (walkingTimeout > 0) {
walkingTimeout--;
} else {
}
}
}
if (repathPentalty > 0) {
repathPentalty--;
}
if (lookUpdateTimer > 0) {
lookUpdateTimer--;
}
}
use of net.tropicraft.core.common.block.BlockBongoDrum in project Tropicraft by Tropicraft.
the class BlockRegistry method registerBlocks.
/**
* Register blocks in preInit
*/
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event) {
IForgeRegistry<Block> registry = event.getRegistry();
chunk = registerBlock(registry, new BlockChunkOHead(), Names.BLOCK_CHUNK_O_HEAD);
ore = registerBlock(registry, new BlockTropicraftOre(), "ore", new MultiBlockItemCreator(TropicraftOres.VALUES).withOredict("oreAzurite", TropicraftOres.AZURITE.getMeta()).withOredict("oreEudialyte", TropicraftOres.EUDIALYTE.getMeta()).withOredict("oreZircon", TropicraftOres.ZIRCON.getMeta()).withOredict("oreManganese", TropicraftOres.MANGANESE.getMeta()));
// FIXME ew
oreBlock = registerBlock(registry, new BlockTropicraftOreBlock(), "oreblock", new MultiBlockItemCreator(TropicraftOres.ORES_WITH_BLOCKS) {
@Override
public Item getItem(Block block) {
return new ItemBlockTropicraft(block, variants.toArray(new ITropicraftVariant[variants.size()])) {
@Override
public String getUnlocalizedName(ItemStack itemstack) {
return super.getUnlocalizedName(itemstack).replaceAll(TropicraftOres.AZURITE.getTypeName(), "oreblock");
}
};
}
});
flowers = registerBlock(registry, new BlockTropicsFlowers(), "flower", new StandardItemCreator(TropicraftFlowers.VALUES));
logs = registerBlock(registry, new BlockTropicraftLog(), "log", new MultiBlockItemCreator(TropicraftLogs.values()).withOredict("logWood", OreDictionary.WILDCARD_VALUE));
coral = registerBlock(registry, new BlockCoral(), "coral", new StandardItemCreator(TropicraftCorals.VALUES));
bundles = registerBlock(registry, new BlockBundle(Material.WOOD), "bundle", new StandardItemCreator(TropicraftBundles.values()).withOredict("blockThatch", TropicraftBundles.THATCH.getMeta()).withOredict("blockBamboo", TropicraftBundles.BAMBOO.getMeta()));
seaweed = registerBlockNoItem(registry, new BlockSeaweed(), "seaweed");
slabs = new BlockTropicraftSlab(Material.WOOD, false);
doubleSlabs = new BlockTropicraftSlab(Material.WOOD, true);
IBlockItemRegistrar slabRegistrar = new MultiBlockItemCreator(TropicraftSlabs.VALUES) {
@Override
public ItemTropicraftSlab getItem(Block block) {
return new ItemTropicraftSlab(block, slabs, doubleSlabs);
}
}.withOredict("slabWood", TropicraftSlabs.PALM.getMeta(), TropicraftSlabs.MAHOGANY.getMeta());
slabs = registerBlock(registry, slabs, "slab", slabRegistrar);
doubleSlabs = registerBlock(registry, doubleSlabs, "double_slab", slabRegistrar);
planks = registerBlock(registry, new BlockTropicraftPlank(Material.WOOD), "plank", new MultiBlockItemCreator(TropicraftPlanks.VALUES).withOredict("plankWood", OreDictionary.WILDCARD_VALUE));
bambooShoot = registerBlock(registry, new BlockBambooShoot(), Names.BAMBOO_SHOOT, new SimpleItemCreator(Names.BAMBOO_SHOOT, false).withOredict("bamboo", 0));
thatchStairs = registerBlock(registry, new BlockTropicraftStairs(bundles.defaultForVariant(TropicraftBundles.THATCH)), Names.BLOCK_THATCH_STAIRS, new SimpleItemCreator(Names.BLOCK_THATCH_STAIRS, true));
bambooStairs = registerBlock(registry, new BlockTropicraftStairs(bundles.defaultForVariant(TropicraftBundles.BAMBOO)), Names.BLOCK_BAMBOO_STAIRS, new SimpleItemCreator(Names.BLOCK_BAMBOO_STAIRS, true));
palmStairs = registerBlock(registry, new BlockTropicraftStairs(planks.defaultForVariant(TropicraftPlanks.PALM)), Names.BLOCK_PALM_STAIRS, new SimpleItemCreator(Names.BLOCK_PALM_STAIRS, true).withOredict("stairsWood", OreDictionary.WILDCARD_VALUE));
chunkStairs = registerBlock(registry, new BlockTropicraftStairs(chunk.getDefaultState()), Names.BLOCK_CHUNK_O_HEAD_STAIRS, new SimpleItemCreator(Names.BLOCK_CHUNK_O_HEAD_STAIRS, true));
mahoganyStairs = registerBlock(registry, new BlockTropicraftStairs(planks.defaultForVariant(TropicraftPlanks.MAHOGANY)), Names.BLOCK_MAHOGANY_STAIRS, new SimpleItemCreator(Names.BLOCK_MAHOGANY_STAIRS, true).withOredict("stairsWood", OreDictionary.WILDCARD_VALUE));
thatchStairsFuzzy = registerBlock(registry, new BlockTropicraftStairsFuzzy(bundles.defaultForVariant(TropicraftBundles.THATCH)), Names.BLOCK_THATCH_STAIRS_FUZZY, new SimpleItemCreator(Names.BLOCK_THATCH_STAIRS_FUZZY, true));
leaves = registerBlock(registry, new BlockTropicraftLeaves(), "leaves", new MultiBlockItemCreator(TropicraftLeaves.VALUES).withOredict("treeLeaves", OreDictionary.WILDCARD_VALUE));
fruitLeaves = registerBlock(registry, new BlockFruitLeaves(), "leaves_fruit", new MultiBlockItemCreator(TropicraftFruitLeaves.VALUES).withOredict("treeLeaves", OreDictionary.WILDCARD_VALUE));
bambooChest = registerBlock(registry, new BlockBambooChest(), Names.BAMBOO_CHEST);
saplings = registerBlock(registry, new BlockTropicsSapling(), "sapling", new StandardItemCreator(TropicraftSaplings.VALUES).withOredict("treeSapling", OreDictionary.WILDCARD_VALUE));
coconut = registerBlock(registry, new BlockCoconut(), Names.COCONUT);
pineapple = registerBlock(registry, new BlockPineapple(), "pineapple");
iris = registerBlock(registry, new BlockIris(), "iris");
coffeePlant = registerBlock(registry, new BlockCoffeeBush(), "coffee_bush", (IBlockItemRegistrar) null);
sands = registerBlock(registry, new BlockTropicraftSands(), "sand", new MultiBlockItemCreator(TropicraftSands.VALUES).withOredict("sand", TropicraftSands.PURIFIED.getMeta()));
volcano = registerBlock(registry, new BlockVolcano(), Names.VOLCANO, (IBlockItemRegistrar) null);
tikiTorch = registerBlock(registry, new BlockTikiTorch(), "tiki_torch");
drinkMixer = registerBlock(registry, new BlockDrinkMixer(), Names.DRINK_MIXER);
sifter = registerBlock(registry, new BlockSifter(), Names.SIFTER);
airCompressor = registerBlock(registry, new BlockAirCompressor(), Names.AIR_COMPRESSOR);
flowerPot = registerBlockNoItem(registry, new BlockTropicraftFlowerPot(), Names.FLOWER_POT);
bambooDoor = registerBlockNoItem(registry, new BlockBambooDoor(), Names.BAMBOO_DOOR);
bongo = registerBlock(registry, new BlockBongoDrum(), Names.BONGO, new MultiBlockItemCreator(TropicraftBongos.VALUES));
bambooFenceGate = registerBlock(registry, (BlockFenceGate) new BlockFenceGate(BlockPlanks.EnumType.BIRCH).setHardness(2.0F).setResistance(5.0F), "bamboo_fence_gate");
thatchFenceGate = registerBlock(registry, (BlockFenceGate) new BlockFenceGate(BlockPlanks.EnumType.BIRCH).setHardness(2.0F).setResistance(5.0F), "thatch_fence_gate");
chunkFenceGate = registerBlock(registry, (BlockFenceGate) new BlockFenceGate(BlockPlanks.EnumType.DARK_OAK).setHardness(2.0F).setResistance(30F), "chunk_fence_gate");
palmFenceGate = registerBlock(registry, (BlockFenceGate) new BlockFenceGate(BlockPlanks.EnumType.SPRUCE).setHardness(2.0F).setResistance(5.0F), "palm_fence_gate", new SimpleItemCreator("palm_fence_gate", false).withOredict("fenceGateWood", OreDictionary.WILDCARD_VALUE));
mahoganyFenceGate = registerBlock(registry, (BlockFenceGate) new BlockFenceGate(BlockPlanks.EnumType.OAK).setHardness(2.0F).setResistance(5.0F), "mahogany_fence_gate", new SimpleItemCreator("mahogany_fence_gate", false).withOredict("fenceGateWood", OreDictionary.WILDCARD_VALUE));
bambooFence = registerBlock(registry, new BlockTropicraftFence(bambooFenceGate, Material.WOOD, MapColor.SAND), "bamboo_fence");
thatchFence = registerBlock(registry, new BlockTropicraftFence(thatchFenceGate, Material.PLANTS, MapColor.SAND), "thatch_fence");
chunkFence = registerBlock(registry, new BlockTropicraftFence(chunkFenceGate, Material.ROCK, MapColor.SAND), "chunk_fence");
palmFence = registerBlock(registry, new BlockTropicraftFence(palmFenceGate, Material.WOOD, MapColor.SAND), "palm_fence", new SimpleItemCreator("palm_fence", true).withOredict("fenceWood", OreDictionary.WILDCARD_VALUE));
mahoganyFence = registerBlock(registry, new BlockTropicraftFence(mahoganyFenceGate, Material.WOOD, MapColor.SAND), "mahogany_fence", new SimpleItemCreator("mahogany_fence", true).withOredict("fenceWood", OreDictionary.WILDCARD_VALUE));
bambooLadder = registerBlock(registry, new BlockTropicraftLadder().setHardness(BlockHardnessValues.BAMBOO.hardness).setResistance(BlockHardnessValues.BAMBOO.resistance), Names.BAMBOO_LADDER);
packedPurifiedSand = registerBlock(registry, new BlockPackedPurifiedSand(), "packed_purified_sand");
// Water must be after fences to reference them in ctor
tropicsWater = registerBlockNoItem(registry, new BlockTropicsWater(FluidRegistry.tropicsWater, Material.WATER), Names.TROPICS_WATER);
tropicsPortal = registerBlockNoItem(registry, new BlockTropicsPortal(FluidRegistry.tropicsPortal, Material.WATER, false), Names.TROPICS_PORTAL);
tropicsPortalTeleporter = registerBlockNoItem(registry, new BlockTropicsPortal(FluidRegistry.tropicsPortal, Material.WATER, true), Names.TROPICS_PORTAL_TELEPORTER);
Tropicraft.proxy.registerFluidBlockRendering(BlockRegistry.tropicsWater, Names.TROPICS_WATER);
Tropicraft.proxy.registerFluidBlockRendering(BlockRegistry.tropicsPortal, Names.TROPICS_PORTAL);
Tropicraft.proxy.registerFluidBlockRendering(BlockRegistry.tropicsPortalTeleporter, Names.TROPICS_PORTAL_TELEPORTER);
portalWall = registerBlockNoItem(registry, new BlockPortalWall(), Names.PORTAL_WALL);
}
Aggregations