Files
zzz_REBIRTH__Utils/Scripts/Blocks/BlockDeployableStructureRebirth.cs
2025-06-04 16:44:53 +09:30

2186 lines
120 KiB
C#

public class BlockDeployableStructureRebirth : Block
{
public ulong TickRate = 20UL;
public int iteration = 0;
public Vector3i blockPos;
public byte blockRotation = 1;
public string structureType = "";
public override bool CanPlaceBlockAt(WorldBase _world, int _clrIdx, Vector3i _blockPos, BlockValue _blockValue, bool _bOmitCollideCheck = false)
{
//Log.Out("BlockDeployableStructureRebirth-CanPlaceBlockAt START");
if (GameManager.Instance.IsEditMode())
{
//Log.Out("BlockDeployableStructureRebirth-CanPlaceBlockAt 1");
return true;
}
bool bCanPlaceBlock = base.CanPlaceBlockAt(_world, _clrIdx, _blockPos, _blockValue, _bOmitCollideCheck);
if (this.Properties.Values.ContainsKey("Structure"))
{
this.structureType = this.Properties.Values["Structure"];
}
if (this.structureType == "TempDefense")
{
//Log.Out("BlockDeployableStructureRebirth-CanPlaceBlockAt 2");
if (RebirthUtilities.overlapsWithOtherBlocks(_world, _blockPos, 3, 3))
{
return false;
}
}
bool hasLandClaim = false;
if (!(bCanPlaceBlock && !hasLandClaim))
{
//Log.Out("BlockDeployableStructureRebirth-CanPlaceBlockAt 3");
return false;
}
return true;
}
public override void LateInit()
{
base.LateInit();
}
public override void OnBlockAdded(WorldBase _world, Chunk _chunk, Vector3i _blockPos, BlockValue _blockValue)
{
//Log.Out("BlockDeployableStructureRebirth-OnBlockAdded START");
base.OnBlockAdded(_world, _chunk, _blockPos, _blockValue);
if (!SingletonMonoBehaviour<ConnectionManager>.Instance.IsServer) return;
if (GameManager.Instance.IsEditMode()) return;
//Log.Out("BlockDeployableStructureRebirth-OnBlockAdded rotation: " + _blockValue.rotation);
_blockValue.meta = 0;
iteration = 0;
if (this.Properties.Values.ContainsKey("Structure"))
{
this.structureType = this.Properties.Values["Structure"];
}
_world.GetWBT().AddScheduledBlockUpdate(_chunk.ClrIdx, _blockPos, this.blockID, 20UL);
}
public override bool UpdateTick(WorldBase _world, int _clrIdx, Vector3i _blockPos, BlockValue _blockValue, bool _bRandomTick, ulong _ticksIfLoaded, GameRandom _rnd)
{
if (!SingletonMonoBehaviour<ConnectionManager>.Instance.IsServer)
{
return false;
}
//Log.Out("BlockDeployableStructureRebirth-UpdateTick START");
byte rotationNew = 0;
TileEntitySecure tileEntitySecure;
if (structureType == "MineShaft")
{
if (iteration == 0) // CREATE THE HOLE
{
BlockValue blockValue;
// DEFAULT ROTATION IS 1
if (_blockValue.rotation == 24)
{
_blockValue.rotation = 0;
}
if (_blockValue.rotation == 25)
{
_blockValue.rotation = 1;
}
if (_blockValue.rotation == 26)
{
_blockValue.rotation = 2;
}
if (_blockValue.rotation == 27)
{
_blockValue.rotation = 3;
}
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 0");
blockPos = _blockPos;
blockRotation = _blockValue.rotation;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
// SHAFT BLOCKS
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y + 3, blockPos.z,
3, 3, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y, blockPos.z,
1, 3, 1,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("woodShapes:cube", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
10, 1, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
9, 2, 1,
_world, chunk
);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 1)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 1");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
RebirthUtilities.ReplaceBlocks("woodShapes:cube", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
10, 2, 1,
_world, chunk
);
blockValue = Block.GetBlockValue("woodShapes:cube", true);
posX = blockPos.x + 2;
posY = blockPos.y - 1;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 1;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 2)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 2");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("woodShapes:barsCorner", true);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 1;
posX = blockPos.x - 1;
posY = blockPos.y;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x - 1;
posY = blockPos.y;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y + 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 1;
posX = blockPos.x - 1;
posY = blockPos.y + 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y + 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x - 1;
posY = blockPos.y + 1;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y + 1;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("woodHatch", true);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("woodShapes:bars", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y + 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 1;
posX = blockPos.x - 1;
posY = blockPos.y + 1;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x;
posY = blockPos.y + 1;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("woodShapes:cube", true);
blockValue.rotation = 0;
posX = blockPos.x - 1;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("woodShapes:ladderSquare", true);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x - 2;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("wallTorchLightPlayer", true);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 3)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 3");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
9, 1, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 7, blockPos.z,
3, 5, 2,
_world, chunk
);
blockValue = Block.GetBlockValue("FuriousRamsayAir", true);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y - 8;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y - 9;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 4)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 4");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("woodShapes:cube", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("wallTorchLightPlayer", true);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y - 8;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y - 8;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x - 2;
posY = blockPos.y - 8;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x - 1;
posY = blockPos.y - 8;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("woodHatch", true);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y - 9;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
RebirthUtilities.ReplaceBlocks("woodShapes:ladderSquare", blockRotation, 1, blockPos.x, blockPos.y - 1, blockPos.z,
8, 1, 0,
_world, chunk
);
blockValue = Block.GetBlockValue("woodShapes:ladderSquare", true);
blockValue.rotation = 1;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
}
}
if (structureType == "MineShaftCobble")
{
if (iteration == 0) // CREATE THE HOLE
{
BlockValue blockValue;
// DEFAULT ROTATION IS 1
if (_blockValue.rotation == 24)
{
_blockValue.rotation = 0;
}
if (_blockValue.rotation == 25)
{
_blockValue.rotation = 1;
}
if (_blockValue.rotation == 26)
{
_blockValue.rotation = 2;
}
if (_blockValue.rotation == 27)
{
_blockValue.rotation = 3;
}
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 0");
blockPos = _blockPos;
blockRotation = _blockValue.rotation;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
// SHAFT BLOCKS
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y + 3, blockPos.z,
3, 3, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y, blockPos.z,
1, 3, 1,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("cobblestoneShapes:cube", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
10, 1, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
9, 2, 1,
_world, chunk
);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 1)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 1");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
RebirthUtilities.ReplaceBlocks("cobblestoneShapes:cube", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
10, 2, 1,
_world, chunk
);
blockValue = Block.GetBlockValue("cobblestoneShapes:cube", true);
posX = blockPos.x + 2;
posY = blockPos.y - 1;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 1;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 2)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 2");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("cobblestoneShapes:barsCorner", true);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 1;
posX = blockPos.x - 1;
posY = blockPos.y;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x - 1;
posY = blockPos.y;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y + 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 1;
posX = blockPos.x - 1;
posY = blockPos.y + 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y + 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x - 1;
posY = blockPos.y + 1;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y + 1;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("ironHatchWhite", true);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("cobblestoneShapes:bars", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y + 1;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 1;
posX = blockPos.x - 1;
posY = blockPos.y + 1;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x;
posY = blockPos.y + 1;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("cobblestoneShapes:cube", true);
blockValue.rotation = 0;
posX = blockPos.x - 1;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("woodShapes:ladderSquare", true);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x - 2;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("wallTorchLightPlayer", true);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 3)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 3");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
9, 1, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 7, blockPos.z,
3, 5, 2,
_world, chunk
);
blockValue = Block.GetBlockValue("FuriousRamsayAir", true);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y - 8;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y - 9;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 4)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 4");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("cobblestoneShapes:cube", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("wallTorchLightPlayer", true);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y - 8;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y - 8;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x - 2;
posY = blockPos.y - 8;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x - 1;
posY = blockPos.y - 8;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("ironHatchWhite", true);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y - 9;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
RebirthUtilities.ReplaceBlocks("woodShapes:ladderSquare", blockRotation, 1, blockPos.x, blockPos.y - 1, blockPos.z,
8, 1, 0,
_world, chunk
);
blockValue = Block.GetBlockValue("woodShapes:ladderSquare", true);
blockValue.rotation = 1;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
}
}
else if (structureType == "MineShaftExtension")
{
if (iteration == 0) // CREATE THE HOLE
{
BlockValue blockValue;
// DEFAULT ROTATION IS 1
if (_blockValue.rotation == 24)
{
_blockValue.rotation = 0;
}
if (_blockValue.rotation == 25)
{
_blockValue.rotation = 1;
}
if (_blockValue.rotation == 26)
{
_blockValue.rotation = 2;
}
if (_blockValue.rotation == 27)
{
_blockValue.rotation = 3;
}
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 0");
blockPos = _blockPos;
blockRotation = _blockValue.rotation;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
// SHAFT BLOCKS
RebirthUtilities.ReplaceBlocks("woodShapes:cube", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
10, 1, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
9, 2, 1,
_world, chunk
);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 1)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 1");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
RebirthUtilities.ReplaceBlocks("woodShapes:cube", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
10, 2, 1,
_world, chunk
);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 2)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 2");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("woodShapes:cube", true);
blockValue.rotation = 0;
posX = blockPos.x - 1;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
9, 1, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 7, blockPos.z,
3, 5, 2,
_world, chunk
);
blockValue = Block.GetBlockValue("FuriousRamsayAir", true);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y - 8;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y - 9;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 3)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 3");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("woodShapes:cube", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("wallTorchLightPlayer", true);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y - 8;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y - 8;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x - 2;
posY = blockPos.y - 8;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x - 1;
posY = blockPos.y - 8;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("woodHatch", true);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y - 9;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
RebirthUtilities.ReplaceBlocks("woodShapes:ladderSquare", blockRotation, 1, blockPos.x, blockPos.y - 1, blockPos.z,
8, 1, 0,
_world, chunk
);
blockValue = Block.GetBlockValue("FuriousRamsayAir", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
}
}
else if (structureType == "MineShaftExtensionCobble")
{
if (iteration == 0) // CREATE THE HOLE
{
BlockValue blockValue;
// DEFAULT ROTATION IS 1
if (_blockValue.rotation == 24)
{
_blockValue.rotation = 0;
}
if (_blockValue.rotation == 25)
{
_blockValue.rotation = 1;
}
if (_blockValue.rotation == 26)
{
_blockValue.rotation = 2;
}
if (_blockValue.rotation == 27)
{
_blockValue.rotation = 3;
}
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 0");
blockPos = _blockPos;
blockRotation = _blockValue.rotation;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
// SHAFT BLOCKS
RebirthUtilities.ReplaceBlocks("cobblestoneShapes:cube", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
10, 1, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
9, 2, 1,
_world, chunk
);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 1)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 1");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
RebirthUtilities.ReplaceBlocks("cobblestoneShapes:cube", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
10, 2, 1,
_world, chunk
);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 2)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 2");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("cobblestoneShapes:cube", true);
blockValue.rotation = 0;
posX = blockPos.x - 1;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 1, blockPos.z,
9, 1, 0,
_world, chunk
);
RebirthUtilities.ReplaceBlocks("FuriousRamsayAir", blockRotation, 0, blockPos.x, blockPos.y - 7, blockPos.z,
3, 5, 2,
_world, chunk
);
blockValue = Block.GetBlockValue("FuriousRamsayAir", true);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y - 8;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y - 9;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 3)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 3");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("cobblestoneShapes:cube", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 1;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
posX = blockPos.x + 2;
posY = blockPos.y - 10;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("wallTorchLightPlayer", true);
blockValue.rotation = 1;
posX = blockPos.x + 2;
posY = blockPos.y - 8;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 0;
posX = blockPos.x + 1;
posY = blockPos.y - 8;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 3;
posX = blockPos.x - 2;
posY = blockPos.y - 8;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue.rotation = 2;
posX = blockPos.x - 1;
posY = blockPos.y - 8;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("ironHatchWhite", true);
blockValue.rotation = 3;
posX = blockPos.x + 1;
posY = blockPos.y - 9;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
RebirthUtilities.ReplaceBlocks("woodShapes:ladderSquare", blockRotation, 1, blockPos.x, blockPos.y - 1, blockPos.z,
8, 1, 0,
_world, chunk
);
blockValue = Block.GetBlockValue("FuriousRamsayAir", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
}
}
else if (structureType == "TempDefense")
{
if (iteration == 0)
{
BlockValue blockValue;
// DEFAULT ROTATION IS 1
if (_blockValue.rotation == 24)
{
_blockValue.rotation = 0;
}
if (_blockValue.rotation == 25)
{
_blockValue.rotation = 1;
}
if (_blockValue.rotation == 26)
{
_blockValue.rotation = 2;
}
if (_blockValue.rotation == 27)
{
_blockValue.rotation = 3;
}
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 0");
blockPos = _blockPos;
blockRotation = _blockValue.rotation;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
// SHAFT BLOCKS
RebirthUtilities.ReplaceBlocks("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":cube", blockRotation, 0, blockPos.x, blockPos.y, blockPos.z,
1, 3, 2,
_world, chunk
);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryscrapHatch_v3", true);
blockValue.rotation = 1;
posX = blockPos.x - 2;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
//Log.Out("BlockDeployableStructureRebirth-UpdateTick posX, posY, posZ: " + posX + ", " + posY + ", " + posZ);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryscrapHatch_v3", true);
blockValue.rotation = 0;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
//Log.Out("BlockDeployableStructureRebirth-UpdateTick posX, posY, posZ: " + posX + ", " + posY + ", " + posZ);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryscrapHatch_v3", true);
blockValue.rotation = 3;
posX = blockPos.x + 2;
posY = blockPos.y;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
//Log.Out("BlockDeployableStructureRebirth-UpdateTick posX, posY, posZ: " + posX + ", " + posY + ", " + posZ);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryscrapHatch_v3", true);
blockValue.rotation = 2;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
//Log.Out("BlockDeployableStructureRebirth-UpdateTick posX, posY, posZ: " + posX + ", " + posY + ", " + posZ);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 1)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 1");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryConcreteLVL" + iteration + ":barsCorner", true);
blockValue.rotation = 2;
posX = blockPos.x - 2;
posY = blockPos.y + 1;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryConcreteLVL" + iteration + ":barsCorner", true);
blockValue.rotation = 1;
posX = blockPos.x - 2;
posY = blockPos.y + 1;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryConcreteLVL" + iteration + ":barsCorner", true);
blockValue.rotation = 0;
posX = blockPos.x + 2;
posY = blockPos.y + 1;
posZ = blockPos.z - 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryConcreteLVL" + iteration + ":barsCorner", true);
blockValue.rotation = 3;
posX = blockPos.x + 2;
posY = blockPos.y + 1;
posZ = blockPos.z + 2;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 2)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 2");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
RebirthUtilities.ReplaceBlocks("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":cube", blockRotation, 0, blockPos.x, blockPos.y + 2, blockPos.z,
1, 3, 2,
_world, chunk
);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
_world.GetWBT().AddScheduledBlockUpdate(_clrIdx, blockPos, this.blockID, this.TickRate);
}
else if (iteration == 3)
{
//Log.Out("BlockDeployableStructureRebirth-UpdateTick 3");
BlockValue blockValue;
int posX = blockPos.x;
int posY = blockPos.y;
int posZ = blockPos.z;
Chunk chunk = (Chunk)_world.GetChunkFromWorldPos(blockPos);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x + 1;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z - 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryCobblestoneLVL" + iteration + ":bars", true);
blockValue.rotation = 10;
posX = blockPos.x - 1;
posY = blockPos.y + 2;
posZ = blockPos.z + 1;
rotationNew = blockValue.rotation;
RebirthUtilities.ConvertRotatedPosition(1, blockRotation, blockPos.x, blockPos.z, ref posX, ref posZ, ref rotationNew);
blockValue.rotation = rotationNew;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
blockValue = Block.GetBlockValue("FuriousRamsayTemporaryDefenseBlock:billboard", true);
blockValue.rotation = 8;
posX = blockPos.x;
posY = blockPos.y;
posZ = blockPos.z;
blockValue = BlockPlaceholderMap.Instance.Replace(blockValue, _world.GetGameRandom(), chunk, posX, posY, posZ, FastTags<TagGroup.Global>.none, false);
_world.SetBlockRPC(_clrIdx, new Vector3i(posX, posY, posZ), blockValue);
DynamicMeshManager.ChunkChanged(blockPos, -1, _blockValue.type);
iteration++;
}
}
return true;
}
public override void Init()
{
base.Init();
}
public override ulong GetTickRate()
{
return (ulong)(1 * 20f);
}
}