use of net.minecraft.util.math.RayTraceResult in project MinecraftForge by MinecraftForge.
the class UniversalBucket method onFillBucket.
// low priority so other mods can handle their stuff first
@SubscribeEvent(priority = EventPriority.LOW)
public void onFillBucket(FillBucketEvent event) {
if (event.getResult() != Event.Result.DEFAULT) {
// event was already handled
return;
}
// not for us to handle
ItemStack emptyBucket = event.getEmptyBucket();
if (emptyBucket.isEmpty() || !emptyBucket.isItemEqual(getEmpty()) || (isNbtSensitive() && ItemStack.areItemStackTagsEqual(emptyBucket, getEmpty()))) {
return;
}
// needs to target a block
RayTraceResult target = event.getTarget();
if (target == null || target.typeOfHit != RayTraceResult.Type.BLOCK) {
return;
}
World world = event.getWorld();
BlockPos pos = target.getBlockPos();
ItemStack singleBucket = emptyBucket.copy();
singleBucket.setCount(1);
FluidActionResult filledResult = FluidUtil.tryPickUpFluid(singleBucket, event.getEntityPlayer(), world, pos, target.sideHit);
if (filledResult.isSuccess()) {
event.setResult(Event.Result.ALLOW);
event.setFilledBucket(filledResult.getResult());
} else {
// cancel event, otherwise the vanilla minecraft ItemBucket would
// convert it into a water/lava bucket depending on the blocks material
event.setCanceled(true);
}
}
use of net.minecraft.util.math.RayTraceResult in project MinecraftForge by MinecraftForge.
the class DynBucketTest method onBucketFill.
@SubscribeEvent
public void onBucketFill(FillBucketEvent event) {
RayTraceResult target = event.getTarget();
if (target != null) {
IBlockState state = event.getWorld().getBlockState(target.getBlockPos());
if (state.getBlock() instanceof IFluidBlock) {
Fluid fluid = ((IFluidBlock) state.getBlock()).getFluid();
FluidStack fs = new FluidStack(fluid, Fluid.BUCKET_VOLUME);
ItemStack bucket = event.getEmptyBucket();
IFluidHandlerItem fluidHandler = FluidUtil.getFluidHandler(bucket);
if (fluidHandler != null) {
int fillAmount = fluidHandler.fill(fs, true);
if (fillAmount > 0) {
ItemStack filledBucket = fluidHandler.getContainer();
event.setFilledBucket(filledBucket);
event.setResult(Result.ALLOW);
}
}
}
}
}
use of net.minecraft.util.math.RayTraceResult in project ImmersiveEngineering by BluSunrize.
the class IEContent method init.
public static void init() {
/**TILEENTITIES*/
registerTile(TileEntityIESlab.class);
registerTile(TileEntityBalloon.class);
registerTile(TileEntityStripCurtain.class);
registerTile(TileEntityCokeOven.class);
registerTile(TileEntityBlastFurnace.class);
registerTile(TileEntityBlastFurnaceAdvanced.class);
registerTile(TileEntityCoresample.class);
registerTile(TileEntityWoodenCrate.class);
registerTile(TileEntityWoodenBarrel.class);
registerTile(TileEntityModWorkbench.class);
registerTile(TileEntitySorter.class);
registerTile(TileEntityTurntable.class);
registerTile(TileEntityFluidSorter.class);
registerTile(TileEntityWatermill.class);
registerTile(TileEntityWindmill.class);
registerTile(TileEntityWindmillAdvanced.class);
registerTile(TileEntityWoodenPost.class);
registerTile(TileEntityWallmount.class);
registerTile(TileEntityLantern.class);
registerTile(TileEntityRazorWire.class);
registerTile(TileEntityToolbox.class);
registerTile(TileEntityConnectorLV.class);
registerTile(TileEntityRelayLV.class);
registerTile(TileEntityConnectorMV.class);
registerTile(TileEntityRelayMV.class);
registerTile(TileEntityConnectorHV.class);
registerTile(TileEntityRelayHV.class);
registerTile(TileEntityConnectorStructural.class);
registerTile(TileEntityTransformer.class);
registerTile(TileEntityTransformerHV.class);
registerTile(TileEntityBreakerSwitch.class);
registerTile(TileEntityRedstoneBreaker.class);
registerTile(TileEntityEnergyMeter.class);
registerTile(TileEntityConnectorRedstone.class);
registerTile(TileEntityCapacitorLV.class);
registerTile(TileEntityCapacitorMV.class);
registerTile(TileEntityCapacitorHV.class);
registerTile(TileEntityCapacitorCreative.class);
registerTile(TileEntityMetalBarrel.class);
registerTile(TileEntityFluidPump.class);
registerTile(TileEntityFluidPlacer.class);
registerTile(TileEntityBlastFurnacePreheater.class);
registerTile(TileEntityFurnaceHeater.class);
registerTile(TileEntityDynamo.class);
registerTile(TileEntityThermoelectricGen.class);
registerTile(TileEntityElectricLantern.class);
registerTile(TileEntityChargingStation.class);
registerTile(TileEntityFluidPipe.class);
registerTile(TileEntitySampleDrill.class);
registerTile(TileEntityTeslaCoil.class);
registerTile(TileEntityFloodlight.class);
registerTile(TileEntityTurret.class);
registerTile(TileEntityTurretChem.class);
registerTile(TileEntityTurretGun.class);
registerTile(TileEntityBelljar.class);
registerTile(TileEntityConveyorBelt.class);
registerTile(TileEntityConveyorVertical.class);
registerTile(TileEntityMetalPress.class);
registerTile(TileEntityCrusher.class);
registerTile(TileEntitySheetmetalTank.class);
registerTile(TileEntitySilo.class);
registerTile(TileEntityAssembler.class);
registerTile(TileEntityAutoWorkbench.class);
registerTile(TileEntityBottlingMachine.class);
registerTile(TileEntitySqueezer.class);
registerTile(TileEntityFermenter.class);
registerTile(TileEntityRefinery.class);
registerTile(TileEntityDieselGenerator.class);
registerTile(TileEntityBucketWheel.class);
registerTile(TileEntityExcavator.class);
registerTile(TileEntityArcFurnace.class);
registerTile(TileEntityLightningrod.class);
registerTile(TileEntityMixer.class);
//
// registerTile(TileEntitySkycrateDispenser.class);
// registerTile(TileEntityFloodlight.class);
//
registerTile(TileEntityFakeLight.class);
/**ENTITIES*/
int i = 0;
EntityRegistry.registerModEntity(EntityRevolvershot.class, "revolverShot", i++, ImmersiveEngineering.instance, 64, 1, true);
EntityRegistry.registerModEntity(EntitySkylineHook.class, "skylineHook", i++, ImmersiveEngineering.instance, 64, 1, true);
//EntityRegistry.registerModEntity(EntitySkycrate.class, "skylineCrate", 2, ImmersiveEngineering.instance, 64, 1, true);
EntityRegistry.registerModEntity(EntityRevolvershotHoming.class, "revolverShotHoming", i++, ImmersiveEngineering.instance, 64, 1, true);
EntityRegistry.registerModEntity(EntityWolfpackShot.class, "revolverShotWolfpack", i++, ImmersiveEngineering.instance, 64, 1, true);
EntityRegistry.registerModEntity(EntityChemthrowerShot.class, "chemthrowerShot", i++, ImmersiveEngineering.instance, 64, 1, true);
EntityRegistry.registerModEntity(EntityRailgunShot.class, "railgunShot", i++, ImmersiveEngineering.instance, 64, 5, true);
EntityRegistry.registerModEntity(EntityRevolvershotFlare.class, "revolverShotFlare", i++, ImmersiveEngineering.instance, 64, 1, true);
EntityRegistry.registerModEntity(EntityIEExplosive.class, "explosive", i++, ImmersiveEngineering.instance, 64, 1, true);
EntityRegistry.registerModEntity(EntityFluorescentTube.class, "fluorescentTube", i++, ImmersiveEngineering.instance, 64, 1, true);
CapabilityShader.register();
ShaderRegistry.itemShader = IEContent.itemShader;
ShaderRegistry.itemShaderBag = IEContent.itemShaderBag;
ShaderRegistry.itemExamples.add(new ItemStack(IEContent.itemRevolver));
ShaderRegistry.itemExamples.add(new ItemStack(IEContent.itemDrill));
ShaderRegistry.itemExamples.add(new ItemStack(IEContent.itemChemthrower));
ShaderRegistry.itemExamples.add(new ItemStack(IEContent.itemRailgun));
/**WOLFPACK BULLETS*/
if (!BulletHandler.homingCartridges.isEmpty()) {
BulletHandler.registerBullet("wolfpack", new WolfpackBullet());
BulletHandler.registerBullet("wolfpackPart", new WolfpackPartBullet());
}
/**SMELTING*/
IERecipes.initFurnaceRecipes();
/**CRAFTING*/
IERecipes.initCraftingRecipes();
/**BLUEPRINTS*/
IERecipes.initBlueprintRecipes();
/**POTIONS*/
IEPotions.init();
/**BANNERS*/
addBanner("hammer", "hmr", new ItemStack(itemTool, 1, 0));
addBanner("bevels", "bvl", "plateIron");
addBanner("ornate", "orn", "dustSilver");
addBanner("treatedwood", "twd", "plankTreatedWood");
addBanner("windmill", "wnd", new ItemStack[] { new ItemStack(blockWoodenDevice1, 1, BlockTypes_WoodenDevice1.WINDMILL.getMeta()), new ItemStack(blockWoodenDevice1, 1, BlockTypes_WoodenDevice1.WINDMILL_ADVANCED.getMeta()) });
if (!BulletHandler.homingCartridges.isEmpty()) {
ItemStack wolfpackCartridge = BulletHandler.getBulletStack("wolfpack");
addBanner("wolf_r", "wlfr", wolfpackCartridge, 1);
addBanner("wolf_l", "wlfl", wolfpackCartridge, -1);
addBanner("wolf", "wlf", wolfpackCartridge, 0, 0);
}
/**CONVEYORS*/
ConveyorHandler.registerMagnetSupression((entity, iConveyorTile) -> {
NBTTagCompound data = entity.getEntityData();
if (!data.getBoolean(Lib.MAGNET_PREVENT_NBT))
data.setBoolean(Lib.MAGNET_PREVENT_NBT, true);
}, (entity, iConveyorTile) -> {
entity.getEntityData().removeTag(Lib.MAGNET_PREVENT_NBT);
});
ConveyorHandler.registerConveyorHandler(new ResourceLocation(ImmersiveEngineering.MODID, "conveyor"), ConveyorBasic.class, (tileEntity) -> new ConveyorBasic());
ConveyorHandler.registerConveyorHandler(new ResourceLocation(ImmersiveEngineering.MODID, "uncontrolled"), ConveyorUncontrolled.class, (tileEntity) -> new ConveyorUncontrolled());
ConveyorHandler.registerConveyorHandler(new ResourceLocation(ImmersiveEngineering.MODID, "dropper"), ConveyorDrop.class, (tileEntity) -> new ConveyorDrop());
ConveyorHandler.registerConveyorHandler(new ResourceLocation(ImmersiveEngineering.MODID, "vertical"), ConveyorVertical.class, (tileEntity) -> new ConveyorVertical());
ConveyorHandler.registerConveyorHandler(new ResourceLocation(ImmersiveEngineering.MODID, "splitter"), ConveyorSplit.class, (tileEntity) -> new ConveyorSplit(tileEntity instanceof IConveyorTile ? ((IConveyorTile) tileEntity).getFacing() : EnumFacing.NORTH));
ConveyorHandler.registerConveyorHandler(new ResourceLocation(ImmersiveEngineering.MODID, "covered"), ConveyorCovered.class, (tileEntity) -> new ConveyorCovered());
/**ASSEMBLER RECIPE ADAPTERS*/
//Shaped
AssemblerHandler.registerRecipeAdapter(ShapedRecipes.class, new IRecipeAdapter<ShapedRecipes>() {
@Override
public RecipeQuery[] getQueriedInputs(ShapedRecipes recipe) {
AssemblerHandler.RecipeQuery[] query = new AssemblerHandler.RecipeQuery[recipe.recipeItems.length];
for (int i = 0; i < query.length; i++) query[i] = AssemblerHandler.createQuery(recipe.recipeItems[i]);
return query;
}
});
//Shapeless
AssemblerHandler.registerRecipeAdapter(ShapelessRecipes.class, new IRecipeAdapter<ShapelessRecipes>() {
@Override
public RecipeQuery[] getQueriedInputs(ShapelessRecipes recipe) {
AssemblerHandler.RecipeQuery[] query = new AssemblerHandler.RecipeQuery[recipe.recipeItems.size()];
for (int i = 0; i < query.length; i++) query[i] = AssemblerHandler.createQuery(recipe.recipeItems.get(i));
return query;
}
});
//ShapedOre
AssemblerHandler.registerRecipeAdapter(ShapedOreRecipe.class, new IRecipeAdapter<ShapedOreRecipe>() {
@Override
public RecipeQuery[] getQueriedInputs(ShapedOreRecipe recipe) {
AssemblerHandler.RecipeQuery[] query = new AssemblerHandler.RecipeQuery[recipe.getInput().length];
for (int i = 0; i < query.length; i++) query[i] = AssemblerHandler.createQuery(recipe.getInput()[i]);
return query;
}
});
//ShapelessOre
AssemblerHandler.registerRecipeAdapter(ShapelessOreRecipe.class, new IRecipeAdapter<ShapelessOreRecipe>() {
@Override
public RecipeQuery[] getQueriedInputs(ShapelessOreRecipe recipe) {
AssemblerHandler.RecipeQuery[] query = new AssemblerHandler.RecipeQuery[recipe.getInput().size()];
for (int i = 0; i < query.length; i++) query[i] = AssemblerHandler.createQuery(recipe.getInput().get(i));
return query;
}
});
//ShapedIngredient
AssemblerHandler.registerRecipeAdapter(RecipeShapedIngredient.class, new IRecipeAdapter<RecipeShapedIngredient>() {
@Override
public RecipeQuery[] getQueriedInputs(RecipeShapedIngredient recipe) {
AssemblerHandler.RecipeQuery[] query = new AssemblerHandler.RecipeQuery[recipe.getIngredients().length];
for (int i = 0; i < query.length; i++) query[i] = AssemblerHandler.createQuery(recipe.getIngredients()[i]);
return query;
}
});
//ShapelessIngredient
AssemblerHandler.registerRecipeAdapter(RecipeShapelessIngredient.class, new IRecipeAdapter<RecipeShapelessIngredient>() {
@Override
public RecipeQuery[] getQueriedInputs(RecipeShapelessIngredient recipe) {
AssemblerHandler.RecipeQuery[] query = new AssemblerHandler.RecipeQuery[recipe.getIngredients().size()];
for (int i = 0; i < query.length; i++) query[i] = AssemblerHandler.createQuery(recipe.getIngredients().get(i));
return query;
}
});
CokeOvenRecipe.addRecipe(new ItemStack(itemMaterial, 1, 6), new ItemStack(Items.COAL), 1800, 500);
CokeOvenRecipe.addRecipe(new ItemStack(blockStoneDecoration, 1, 3), "blockCoal", 1800 * 9, 5000);
CokeOvenRecipe.addRecipe(new ItemStack(Items.COAL, 1, 1), "logWood", 900, 250);
BlastFurnaceRecipe.addRecipe(new ItemStack(itemMetal, 1, 8), "ingotIron", 1200, new ItemStack(itemMaterial, 1, 7));
BlastFurnaceRecipe.addRecipe(new ItemStack(blockStorage, 1, 8), "blockIron", 1200 * 9, new ItemStack(itemMaterial, 9, 7));
BlastFurnaceRecipe.addBlastFuel("fuelCoke", 1200);
BlastFurnaceRecipe.addBlastFuel("blockFuelCoke", 1200 * 10);
BlastFurnaceRecipe.addBlastFuel("charcoal", 300);
BlastFurnaceRecipe.addBlastFuel("blockCharcoal", 300 * 10);
GameRegistry.registerFuelHandler(new IEFuelHandler());
IERecipes.initCrusherRecipes();
IERecipes.initArcSmeltingRecipes();
ItemStack shoddyElectrode = new ItemStack(itemGraphiteElectrode);
shoddyElectrode.setItemDamage(ItemGraphiteElectrode.electrodeMaxDamage / 2);
MetalPressRecipe.addRecipe(shoddyElectrode, "ingotHOPGraphite", new ItemStack(IEContent.itemMold, 1, 2), 4800).setInputSize(4);
DieselHandler.registerFuel(fluidBiodiesel, 125);
DieselHandler.registerFuel(FluidRegistry.getFluid("fuel"), 375);
DieselHandler.registerFuel(FluidRegistry.getFluid("diesel"), 175);
DieselHandler.registerDrillFuel(fluidBiodiesel);
DieselHandler.registerDrillFuel(FluidRegistry.getFluid("fuel"));
DieselHandler.registerDrillFuel(FluidRegistry.getFluid("diesel"));
blockFluidCreosote.setPotionEffects(new PotionEffect(IEPotions.flammable, 100, 0));
blockFluidEthanol.setPotionEffects(new PotionEffect(MobEffects.NAUSEA, 40, 0));
blockFluidBiodiesel.setPotionEffects(new PotionEffect(IEPotions.flammable, 100, 1));
blockFluidConcrete.setPotionEffects(new PotionEffect(MobEffects.SLOWNESS, 20, 3, false, false));
ChemthrowerHandler.registerEffect(FluidRegistry.WATER, new ChemthrowerEffect_Extinguish());
ChemthrowerHandler.registerEffect(fluidPotion, new ChemthrowerEffect() {
@Override
public void applyToEntity(EntityLivingBase target, @Nullable EntityPlayer shooter, ItemStack thrower, FluidStack fluid) {
if (fluid.tag != null) {
List<PotionEffect> effects = PotionUtils.getEffectsFromTag(fluid.tag);
for (PotionEffect e : effects) {
PotionEffect newEffect = new PotionEffect(e.getPotion(), (int) Math.ceil(e.getDuration() * .05), e.getAmplifier());
newEffect.setCurativeItems(new ArrayList(e.getCurativeItems()));
target.addPotionEffect(newEffect);
}
}
}
@Override
public void applyToEntity(EntityLivingBase target, @Nullable EntityPlayer shooter, ItemStack thrower, Fluid fluid) {
}
@Override
public void applyToBlock(World worldObj, RayTraceResult mop, @Nullable EntityPlayer shooter, ItemStack thrower, FluidStack fluid) {
}
@Override
public void applyToBlock(World worldObj, RayTraceResult mop, @Nullable EntityPlayer shooter, ItemStack thrower, Fluid fluid) {
}
});
ChemthrowerHandler.registerEffect(fluidCreosote, new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 140, 0));
ChemthrowerHandler.registerFlammable(fluidCreosote);
ChemthrowerHandler.registerEffect(fluidBiodiesel, new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 140, 1));
ChemthrowerHandler.registerFlammable(fluidBiodiesel);
ChemthrowerHandler.registerFlammable(fluidEthanol);
ChemthrowerHandler.registerEffect("oil", new ChemthrowerEffect_Potion(null, 0, new PotionEffect(IEPotions.flammable, 140, 0), new PotionEffect(MobEffects.BLINDNESS, 80, 1)));
ChemthrowerHandler.registerFlammable("oil");
ChemthrowerHandler.registerEffect("fuel", new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 100, 1));
ChemthrowerHandler.registerFlammable("fuel");
ChemthrowerHandler.registerEffect("diesel", new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 140, 1));
ChemthrowerHandler.registerFlammable("diesel");
ChemthrowerHandler.registerEffect("kerosene", new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 100, 1));
ChemthrowerHandler.registerFlammable("kerosene");
ChemthrowerHandler.registerEffect("biofuel", new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 140, 1));
ChemthrowerHandler.registerFlammable("biofuel");
ChemthrowerHandler.registerEffect("rocket_fuel", new ChemthrowerEffect_Potion(null, 0, IEPotions.flammable, 60, 2));
ChemthrowerHandler.registerFlammable("rocket_fuel");
RailgunHandler.registerProjectileProperties(new IngredientStack("stickIron"), 10, 1.25).setColourMap(new int[][] { { 0xd8d8d8, 0xd8d8d8, 0xd8d8d8, 0xa8a8a8, 0x686868, 0x686868 } });
RailgunHandler.registerProjectileProperties(new IngredientStack("stickAluminum"), 9, 1.05).setColourMap(new int[][] { { 0xd8d8d8, 0xd8d8d8, 0xd8d8d8, 0xa8a8a8, 0x686868, 0x686868 } });
RailgunHandler.registerProjectileProperties(new IngredientStack("stickSteel"), 12, 1.25).setColourMap(new int[][] { { 0xb4b4b4, 0xb4b4b4, 0xb4b4b4, 0x7a7a7a, 0x555555, 0x555555 } });
RailgunHandler.registerProjectileProperties(new ItemStack(itemGraphiteElectrode), 16, .9).setColourMap(new int[][] { { 0x242424, 0x242424, 0x242424, 0x171717, 0x171717, 0x0a0a0a } });
ExternalHeaterHandler.defaultFurnaceEnergyCost = IEConfig.Machines.heater_consumption;
ExternalHeaterHandler.defaultFurnaceSpeedupCost = IEConfig.Machines.heater_speedupConsumption;
ExternalHeaterHandler.registerHeatableAdapter(TileEntityFurnace.class, new DefaultFurnaceAdapter());
SqueezerRecipe.addRecipe(new FluidStack(fluidPlantoil, 80), null, Items.WHEAT_SEEDS, 6400);
SqueezerRecipe.addRecipe(new FluidStack(fluidPlantoil, 80), null, Items.PUMPKIN_SEEDS, 6400);
SqueezerRecipe.addRecipe(new FluidStack(fluidPlantoil, 80), null, Items.MELON_SEEDS, 6400);
SqueezerRecipe.addRecipe(new FluidStack(fluidPlantoil, 120), null, itemSeeds, 6400);
SqueezerRecipe.addRecipe(null, new ItemStack(itemMaterial, 1, 18), new ItemStack(itemMaterial, 8, 17), 19200);
Fluid fluidBlood = FluidRegistry.getFluid("blood");
if (fluidBlood != null)
SqueezerRecipe.addRecipe(new FluidStack(fluidBlood, 5), new ItemStack(Items.LEATHER), new ItemStack(Items.ROTTEN_FLESH), 6400);
FermenterRecipe.addRecipe(new FluidStack(fluidEthanol, 80), null, Items.REEDS, 6400);
FermenterRecipe.addRecipe(new FluidStack(fluidEthanol, 80), null, Items.MELON, 6400);
FermenterRecipe.addRecipe(new FluidStack(fluidEthanol, 80), null, Items.APPLE, 6400);
FermenterRecipe.addRecipe(new FluidStack(fluidEthanol, 80), null, "cropPotato", 6400);
RefineryRecipe.addRecipe(new FluidStack(fluidBiodiesel, 16), new FluidStack(fluidPlantoil, 8), new FluidStack(fluidEthanol, 8), 80);
MixerRecipe.addRecipe(new FluidStack(fluidConcrete, 500), new FluidStack(FluidRegistry.WATER, 500), new Object[] { "sand", "sand", Items.CLAY_BALL, "gravel" }, 3200);
BottlingMachineRecipe.addRecipe(new ItemStack(Blocks.SPONGE, 1, 1), new ItemStack(Blocks.SPONGE, 1, 0), new FluidStack(FluidRegistry.WATER, 1000));
BelljarHandler.DefaultPlantHandler hempBelljarHandler = new BelljarHandler.DefaultPlantHandler() {
private HashSet<ComparableItemStack> validSeeds = new HashSet<>();
@Override
protected HashSet<ComparableItemStack> getSeedSet() {
return validSeeds;
}
@Override
@SideOnly(Side.CLIENT)
public IBlockState[] getRenderedPlant(ItemStack seed, ItemStack soil, float growth, TileEntity tile) {
int age = Math.min(4, Math.round(growth * 4));
if (age == 4)
return new IBlockState[] { blockCrop.getStateFromMeta(age), blockCrop.getStateFromMeta(age + 1) };
return new IBlockState[] { blockCrop.getStateFromMeta(age) };
}
@Override
@SideOnly(Side.CLIENT)
public float getRenderSize(ItemStack seed, ItemStack soil, float growth, TileEntity tile) {
return .6875f;
}
};
BelljarHandler.registerHandler(hempBelljarHandler);
hempBelljarHandler.register(new ItemStack(itemSeeds), new ItemStack[] { new ItemStack(itemMaterial, 4, 4), new ItemStack(itemSeeds, 2) }, new ItemStack(Blocks.DIRT), blockCrop.getDefaultState());
ThermoelectricHandler.registerSourceInKelvin("blockIce", 273);
ThermoelectricHandler.registerSourceInKelvin("blockPackedIce", 200);
ThermoelectricHandler.registerSourceInKelvin("blockUranium", 2000);
ThermoelectricHandler.registerSourceInKelvin("blockYellorium", 2000);
ThermoelectricHandler.registerSourceInKelvin("blockPlutonium", 4000);
ThermoelectricHandler.registerSourceInKelvin("blockBlutonium", 4000);
ExcavatorHandler.mineralVeinCapacity = IEConfig.Machines.excavator_depletion;
ExcavatorHandler.mineralChance = IEConfig.Machines.excavator_chance;
ExcavatorHandler.defaultDimensionBlacklist = IEConfig.Machines.excavator_dimBlacklist;
ExcavatorHandler.addMineral("Iron", 25, .1f, new String[] { "oreIron", "oreNickel", "oreTin", "denseoreIron" }, new float[] { .5f, .25f, .20f, .05f });
ExcavatorHandler.addMineral("Magnetite", 25, .1f, new String[] { "oreIron", "oreGold" }, new float[] { .85f, .15f });
if (OreDictionary.doesOreNameExist("oreSulfur"))
ExcavatorHandler.addMineral("Pyrite", 20, .1f, new String[] { "oreIron", "oreSulfur" }, new float[] { .5f, .5f });
ExcavatorHandler.addMineral("Bauxite", 20, .2f, new String[] { "oreAluminum", "oreTitanium", "denseoreAluminum" }, new float[] { .90f, .05f, .05f });
ExcavatorHandler.addMineral("Copper", 30, .2f, new String[] { "oreCopper", "oreGold", "oreNickel", "denseoreCopper" }, new float[] { .65f, .25f, .05f, .05f });
if (OreDictionary.doesOreNameExist("oreTin"))
ExcavatorHandler.addMineral("Cassiterite", 15, .2f, new String[] { "oreTin", "denseoreTin" }, new float[] { .95f, .05f });
ExcavatorHandler.addMineral("Gold", 20, .3f, new String[] { "oreGold", "oreCopper", "oreNickel", "denseoreGold" }, new float[] { .65f, .25f, .05f, .05f });
ExcavatorHandler.addMineral("Nickel", 20, .3f, new String[] { "oreNickel", "orePlatinum", "oreIron", "denseoreNickel" }, new float[] { .85f, .05f, .05f, .05f });
if (OreDictionary.doesOreNameExist("orePlatinum"))
ExcavatorHandler.addMineral("Platinum", 5, .35f, new String[] { "orePlatinum", "oreNickel", "", "oreIridium", "denseorePlatinum" }, new float[] { .40f, .30f, .15f, .1f, .05f });
if (OreDictionary.doesOreNameExist("oreUranium") || OreDictionary.doesOreNameExist("oreYellorium"))
ExcavatorHandler.addMineral("Uranium", 10, .35f, new String[] { "oreUranium", "oreLead", "orePlutonium", "denseoreUranium" }, new float[] { .55f, .3f, .1f, .05f }).addReplacement("oreUranium", "oreYellorium");
ExcavatorHandler.addMineral("Quartzite", 5, .3f, new String[] { "oreQuartz", "oreCertusQuartz" }, new float[] { .6f, .4f });
ExcavatorHandler.addMineral("Galena", 15, .2f, new String[] { "oreLead", "oreSilver", "oreSulfur", "denseoreLead", "denseoreSilver" }, new float[] { .40f, .40f, .1f, .05f, .05f });
ExcavatorHandler.addMineral("Lead", 10, .15f, new String[] { "oreLead", "oreSilver", "denseoreLead" }, new float[] { .55f, .4f, .05f });
ExcavatorHandler.addMineral("Silver", 10, .2f, new String[] { "oreSilver", "oreLead", "denseoreSilver" }, new float[] { .55f, .4f, .05f });
ExcavatorHandler.addMineral("Lapis", 10, .2f, new String[] { "oreLapis", "oreIron", "oreSulfur", "denseoreLapis" }, new float[] { .65f, .275f, .025f, .05f });
ExcavatorHandler.addMineral("Coal", 25, .1f, new String[] { "oreCoal", "denseoreCoal", "oreDiamond", "oreEmerald" }, new float[] { .92f, .1f, .015f, .015f });
/**MULTIBLOCKS*/
MultiblockHandler.registerMultiblock(MultiblockCokeOven.instance);
MultiblockHandler.registerMultiblock(MultiblockBlastFurnace.instance);
MultiblockHandler.registerMultiblock(MultiblockBlastFurnaceAdvanced.instance);
MultiblockHandler.registerMultiblock(MultiblockMetalPress.instance);
MultiblockHandler.registerMultiblock(MultiblockCrusher.instance);
MultiblockHandler.registerMultiblock(MultiblockSheetmetalTank.instance);
MultiblockHandler.registerMultiblock(MultiblockSilo.instance);
MultiblockHandler.registerMultiblock(MultiblockAssembler.instance);
MultiblockHandler.registerMultiblock(MultiblockAutoWorkbench.instance);
MultiblockHandler.registerMultiblock(MultiblockBottlingMachine.instance);
MultiblockHandler.registerMultiblock(MultiblockSqueezer.instance);
MultiblockHandler.registerMultiblock(MultiblockFermenter.instance);
MultiblockHandler.registerMultiblock(MultiblockRefinery.instance);
MultiblockHandler.registerMultiblock(MultiblockDieselGenerator.instance);
MultiblockHandler.registerMultiblock(MultiblockExcavator.instance);
MultiblockHandler.registerMultiblock(MultiblockBucketWheel.instance);
MultiblockHandler.registerMultiblock(MultiblockArcFurnace.instance);
MultiblockHandler.registerMultiblock(MultiblockLightningrod.instance);
MultiblockHandler.registerMultiblock(MultiblockMixer.instance);
/**ACHIEVEMENTS*/
IEAchievements.init();
/**VILLAGE*/
VillagerRegistry villageRegistry = VillagerRegistry.instance();
if (IEConfig.villagerHouse) {
villageRegistry.registerVillageCreationHandler(new VillageEngineersHouse.VillageManager());
MapGenStructureIO.registerStructureComponent(VillageEngineersHouse.class, ImmersiveEngineering.MODID + ":EngineersHouse");
}
if (IEConfig.enableVillagers) {
villagerProfession_engineer = new VillagerRegistry.VillagerProfession(ImmersiveEngineering.MODID + ":engineer", "immersiveengineering:textures/models/villager_engineer.png", "immersiveengineering:textures/models/villager_engineer_zombie.png");
villageRegistry.register(villagerProfession_engineer);
VillagerRegistry.VillagerCareer career_engineer = new VillagerRegistry.VillagerCareer(villagerProfession_engineer, ImmersiveEngineering.MODID + ".engineer");
career_engineer.addTrade(1, new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMaterial, 1, 0), new EntityVillager.PriceInfo(8, 16)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(blockWoodenDecoration, 1, 1), new EntityVillager.PriceInfo(-10, -6)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(blockClothDevice, 1, 1), new EntityVillager.PriceInfo(-3, -1)));
career_engineer.addTrade(2, new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMaterial, 1, 1), new EntityVillager.PriceInfo(2, 6)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(blockMetalDecoration1, 1, 1), new EntityVillager.PriceInfo(-8, -4)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(blockMetalDecoration1, 1, 5), new EntityVillager.PriceInfo(-8, -4)));
career_engineer.addTrade(3, new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMaterial, 1, 2), new EntityVillager.PriceInfo(2, 6)), new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMaterial, 1, 7), new EntityVillager.PriceInfo(4, 8)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(blockStoneDecoration, 1, 5), new EntityVillager.PriceInfo(-6, -2)));
VillagerRegistry.VillagerCareer career_machinist = new VillagerRegistry.VillagerCareer(villagerProfession_engineer, ImmersiveEngineering.MODID + ".machinist");
career_machinist.addTrade(1, new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMaterial, 1, 6), new EntityVillager.PriceInfo(8, 16)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemTool, 1, 0), new EntityVillager.PriceInfo(4, 7)));
career_machinist.addTrade(2, new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMetal, 1, 0), new EntityVillager.PriceInfo(4, 6)), new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMetal, 1, 1), new EntityVillager.PriceInfo(4, 6)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemMaterial, 1, 9), new EntityVillager.PriceInfo(1, 3)));
career_machinist.addTrade(3, new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemToolbox, 1, 0), new EntityVillager.PriceInfo(6, 8)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemMaterial, 1, 10), new EntityVillager.PriceInfo(1, 3)), new IEVillagerTrades.ItemstackForEmerald(ItemEngineersBlueprint.getTypedBlueprint("specialBullet"), new EntityVillager.PriceInfo(5, 9)));
career_machinist.addTrade(4, new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemDrillhead, 1, 0), new EntityVillager.PriceInfo(28, 40)), new IEVillagerTrades.ItemstackForEmerald(itemEarmuffs, new EntityVillager.PriceInfo(4, 9)));
career_machinist.addTrade(5, new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemDrillhead, 1, 1), new EntityVillager.PriceInfo(32, 48)), new IEVillagerTrades.ItemstackForEmerald(ItemEngineersBlueprint.getTypedBlueprint("electrode"), new EntityVillager.PriceInfo(12, 24)));
VillagerRegistry.VillagerCareer career_electrician = new VillagerRegistry.VillagerCareer(villagerProfession_engineer, ImmersiveEngineering.MODID + ".electrician");
career_electrician.addTrade(1, new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMaterial, 1, 20), new EntityVillager.PriceInfo(8, 16)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemTool, 1, 1), new EntityVillager.PriceInfo(4, 7)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemWireCoil, 1, 0), new EntityVillager.PriceInfo(-4, -2)));
career_electrician.addTrade(2, new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMaterial, 1, 21), new EntityVillager.PriceInfo(6, 12)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemTool, 1, 2), new EntityVillager.PriceInfo(4, 7)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemWireCoil, 1, 1), new EntityVillager.PriceInfo(-4, -1)));
career_electrician.addTrade(3, new IEVillagerTrades.EmeraldForItemstack(new ItemStack(itemMaterial, 1, 22), new EntityVillager.PriceInfo(4, 8)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemWireCoil, 1, 1), new EntityVillager.PriceInfo(-2, -1)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemToolUpgrades, 1, 6), new EntityVillager.PriceInfo(8, 12)));
career_electrician.addTrade(4, new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemToolUpgrades, 1, 9), new EntityVillager.PriceInfo(8, 12)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemFluorescentTube), new EntityVillager.PriceInfo(8, 12)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemsFaradaySuit[0]), new EntityVillager.PriceInfo(5, 7)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemsFaradaySuit[1]), new EntityVillager.PriceInfo(9, 11)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemsFaradaySuit[2]), new EntityVillager.PriceInfo(5, 7)), new IEVillagerTrades.ItemstackForEmerald(new ItemStack(itemsFaradaySuit[3]), new EntityVillager.PriceInfo(11, 15)));
VillagerRegistry.VillagerCareer career_outfitter = new VillagerRegistry.VillagerCareer(villagerProfession_engineer, ImmersiveEngineering.MODID + ".outfitter");
ItemStack bag_common = new ItemStack(IEContent.itemShaderBag);
ItemNBTHelper.setString(bag_common, "rarity", EnumRarity.COMMON.toString());
ItemStack bag_uncommon = new ItemStack(IEContent.itemShaderBag);
ItemNBTHelper.setString(bag_uncommon, "rarity", EnumRarity.UNCOMMON.toString());
ItemStack bag_rare = new ItemStack(IEContent.itemShaderBag);
ItemNBTHelper.setString(bag_rare, "rarity", EnumRarity.RARE.toString());
career_outfitter.addTrade(1, new IEVillagerTrades.EmeraldForItemstack(bag_common, new EntityVillager.PriceInfo(8, 16)));
career_outfitter.addTrade(2, new IEVillagerTrades.EmeraldForItemstack(bag_uncommon, new EntityVillager.PriceInfo(12, 20)));
career_outfitter.addTrade(3, new IEVillagerTrades.EmeraldForItemstack(bag_rare, new EntityVillager.PriceInfo(16, 24)));
}
/**LOOT*/
if (IEConfig.villagerHouse)
LootTableList.register(VillageEngineersHouse.woodenCrateLoot);
for (ResourceLocation rl : EventHandler.lootInjections) LootTableList.register(rl);
// //Railcraft Compat
// if(Loader.isModLoaded("Railcraft"))
// {
// Block rcCube = GameRegistry.findBlock("Railcraft", "cube");
// if(rcCube!=null)
// OreDictionary.registerOre("blockFuelCoke", new ItemStack(rcCube,1,0));
// }
}
use of net.minecraft.util.math.RayTraceResult in project NetherEx by LogicTechCorp.
the class ItemObsidianBoat method onItemRightClick.
@Override
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
ItemStack stack = player.getHeldItem(hand);
float f1 = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * 1.0F;
float f2 = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * 1.0F;
double d0 = player.prevPosX + (player.posX - player.prevPosX) * 1.0D;
double d1 = player.prevPosY + (player.posY - player.prevPosY) * 1.0D + (double) player.getEyeHeight();
double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * 1.0D;
Vec3d vec3d = new Vec3d(d0, d1, d2);
float f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI);
float f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI);
float f5 = -MathHelper.cos(-f1 * 0.017453292F);
float f6 = MathHelper.sin(-f1 * 0.017453292F);
float f7 = f4 * f5;
float f8 = f3 * f5;
Vec3d vec3d1 = vec3d.addVector((double) f7 * 5.0D, (double) f6 * 5.0D, (double) f8 * 5.0D);
RayTraceResult raytraceresult = world.rayTraceBlocks(vec3d, vec3d1, true);
if (raytraceresult == null) {
return new ActionResult(EnumActionResult.PASS, stack);
} else {
Vec3d vec3d2 = player.getLook(1.0F);
boolean flag = false;
List<Entity> entities = world.getEntitiesWithinAABBExcludingEntity(player, player.getEntityBoundingBox().addCoord(vec3d2.xCoord * 5.0D, vec3d2.yCoord * 5.0D, vec3d2.zCoord * 5.0D).expandXyz(1.0D));
for (Entity entity : entities) {
if (entity.canBeCollidedWith()) {
AxisAlignedBB axisalignedbb = entity.getEntityBoundingBox().expandXyz((double) entity.getCollisionBorderSize());
if (axisalignedbb.isVecInside(vec3d)) {
flag = true;
}
}
}
if (flag) {
return new ActionResult(EnumActionResult.PASS, stack);
} else if (raytraceresult.typeOfHit != RayTraceResult.Type.BLOCK) {
return new ActionResult(EnumActionResult.PASS, stack);
} else {
Block block = world.getBlockState(raytraceresult.getBlockPos()).getBlock();
boolean flag1 = block == Blocks.WATER || block == Blocks.FLOWING_WATER;
EntityObsidianBoat boat = new EntityObsidianBoat(world, raytraceresult.hitVec.xCoord, flag1 ? raytraceresult.hitVec.yCoord - 0.12D : raytraceresult.hitVec.yCoord, raytraceresult.hitVec.zCoord);
boat.rotationYaw = player.rotationYaw;
if (!world.getCollisionBoxes(boat, boat.getEntityBoundingBox().expandXyz(-0.1D)).isEmpty()) {
return new ActionResult(EnumActionResult.FAIL, stack);
} else {
if (!world.isRemote) {
world.spawnEntity(boat);
}
if (!player.capabilities.isCreativeMode) {
stack.shrink(1);
}
return new ActionResult(EnumActionResult.SUCCESS, stack);
}
}
}
}
use of net.minecraft.util.math.RayTraceResult in project ConvenientAdditions by Necr0.
the class ItemClimbingClaws method onLivingUpdate.
@SubscribeEvent
public void onLivingUpdate(LivingEvent.LivingUpdateEvent event) {
if (event.getEntityLiving() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getEntityLiving();
for (SlotNotation slot : InventoryIterator.getIterable(player, EnumInventory.BAUBLES)) {
ItemStack stack = slot.getItem();
if (!stack.isEmpty() && stack.getItem() instanceof ItemClimbingClaws) {
ItemClimbingClaws item = (ItemClimbingClaws) stack.getItem();
if (item.wallClimbSpeed > 0) {
Vec3d ppos = new Vec3d(player.posX, player.posY, player.posZ);
Vec3d plook = player.getLookVec();
plook = plook.subtract(0, plook.yCoord, 0).normalize();
RayTraceResult r = player.world.rayTraceBlocks(ppos, ppos.add(plook.scale(.425)), false, true, false);
if (r != null && r.typeOfHit == RayTraceResult.Type.BLOCK) {
IBlockState state = player.world.getBlockState(r.getBlockPos());
if (state.isSideSolid(player.world, r.getBlockPos(), r.sideHit)) {
if (player.isSneaking()) {
if (player.moveForward > 0F) {
player.motionY = Math.max(item.wallClimbSpeed, player.motionY);
} else {
player.motionY = Math.max(0d, player.motionY);
}
player.fallDistance = 0;
} else {
player.motionY = Math.max(player.motionY, Math.min(player.motionY + .1d, -.15d));
if (player.motionY > -.666)
player.fallDistance = 0;
}
}
}
break;
}
}
}
for (SlotNotation slot : InventoryIterator.getIterable(player, EnumInventory.BAUBLES)) {
ItemStack stack = slot.getItem();
if (!stack.isEmpty() && stack.getItem() instanceof ItemClimbingClaws) {
ItemClimbingClaws item = (ItemClimbingClaws) stack.getItem();
if (item.stepHeightBoost > 0) {
if (player.isSneaking())
player.stepHeight = .6f;
else
player.stepHeight = .6f + item.stepHeightBoost;
break;
}
}
}
}
}
Aggregations