本文整理汇总了C#中MiNET.Worlds.Level.ScheduleBlockTick方法的典型用法代码示例。如果您正苦于以下问题:C# Level.ScheduleBlockTick方法的具体用法?C# Level.ScheduleBlockTick怎么用?C# Level.ScheduleBlockTick使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MiNET.Worlds.Level
的用法示例。
在下文中一共展示了Level.ScheduleBlockTick方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Interact
public override bool Interact(Level world, Player player, BlockCoordinates blockCoordinates, BlockFace face)
{
Metadata = (byte) (Metadata | (0x8));
world.SetBlock(this);
world.ScheduleBlockTick(this, TickRate);
return true;
}
示例2: SetToFlowing
private void SetToFlowing(Level world)
{
Block flowingBlock = BlockFactory.GetBlockById((byte) (Id - 1));
flowingBlock.Metadata = Metadata;
flowingBlock.Coordinates = Coordinates;
world.SetBlock(flowingBlock, applyPhysics: false);
world.ScheduleBlockTick(flowingBlock, 5);
}
示例3: OnTick
public override void OnTick(Level world)
{
Random random = new Random();
int x = Coordinates.X;
int y = Coordinates.Y;
int z = Coordinates.Z;
int currentDecay = GetFlowDecay(world, x, y, z);
byte multiplier = 1;
if (this is FlowingLava)
{
multiplier = 2;
}
bool flag = true;
int tickRate = TickRate();
if (currentDecay > 0)
{
int smallestFlowDecay = -100;
_adjacentSources = 0;
smallestFlowDecay = GetSmallestFlowDecay(world, x - 1, y, z, smallestFlowDecay);
smallestFlowDecay = GetSmallestFlowDecay(world, x + 1, y, z, smallestFlowDecay);
smallestFlowDecay = GetSmallestFlowDecay(world, x, y, z - 1, smallestFlowDecay);
smallestFlowDecay = GetSmallestFlowDecay(world, x, y, z + 1, smallestFlowDecay);
int newDecay = smallestFlowDecay + multiplier;
if (newDecay >= 8 || smallestFlowDecay < 0)
{
newDecay = -1;
}
if (GetFlowDecay(world, x, y + 1, z) >= 0)
{
int topFlowDecay = GetFlowDecay(world, x, y + 1, z);
if (topFlowDecay >= 8)
{
newDecay = topFlowDecay;
}
else
{
newDecay = topFlowDecay + 8;
}
}
if (_adjacentSources >= 2 && this is FlowingWater)
{
if (world.GetBlock(x, y - 1, z).IsSolid)
{
newDecay = 0;
}
else if (IsSameMaterial(world.GetBlock(x, y - 1, z)) && world.GetBlock(x, y - 1, z).Metadata == 0)
{
newDecay = 0;
}
}
if (this is FlowingLava && currentDecay < 8 && newDecay < 8 && newDecay > currentDecay && random.Next(4) != 0)
{
//newDecay = currentDecay;
//flag = false;
tickRate *= 4;
}
if (newDecay == currentDecay)
{
if (flag)
{
SetToStill(world, x, y, z);
}
}
else
{
currentDecay = newDecay;
if (newDecay < 0)
{
world.SetAir(x, y, z);
}
else
{
world.SetData(x, y, z, (byte) newDecay);
world.ApplyPhysics(x, y, z);
world.ScheduleBlockTick(this, tickRate); // Schedule tick
}
}
}
else
{
SetToStill(world, x, y, z);
}
if (CanBeFlownInto(world, x, y - 1, z) /* || world.GetBlock(x, y - 1, z) is Flowing*/)
{
if (this is FlowingLava && (world.GetBlock(x, y - 1, z) is FlowingWater || world.GetBlock(x, y - 1, z) is StationaryWater))
{
world.SetBlock(new Cobblestone {Coordinates = new BlockCoordinates(x, y - 1, z)});
return;
}
//.........这里部分代码省略.........
示例4: Flow
private void Flow(Level world, int x, int y, int z, int decay)
{
if (CanBeFlownInto(world, x, y, z))
{
//Block block = world.GetBlock(x, y, z);
//if (this is FlowingLava)
//{
// this.fizz(world, i, j, k);
//}
//else
//{
// block.DoDrop(world, i, j, k, world.getData(i, j, k), 0);
//}
Block newBlock = BlockFactory.GetBlockById(Id);
newBlock.Coordinates = new BlockCoordinates(x, y, z);
newBlock.Metadata = (byte) decay;
world.SetBlock(newBlock, applyPhysics: true);
world.ScheduleBlockTick(newBlock, TickRate());
}
}
示例5: DoPhysics
public override void DoPhysics(Level level)
{
CheckForHarden(level, Coordinates.X, Coordinates.Y, Coordinates.Z);
level.ScheduleBlockTick(this, TickRate());
}
示例6: PlaceBlock
public override bool PlaceBlock(Level world, Player player, BlockCoordinates blockCoordinates, BlockFace face, Vector3 faceCoords)
{
CheckForHarden(world, blockCoordinates.X, blockCoordinates.Y, blockCoordinates.Z);
world.ScheduleBlockTick(this, TickRate());
return false;
}