mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-24 05:10:42 -04:00
41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
// Copyright 2014-2017 ClassicalSharp | Licensed under BSD-3
|
|
using System;
|
|
using ClassicalSharp.Map;
|
|
using BlockRaw = System.Byte;
|
|
|
|
namespace ClassicalSharp.Singleplayer {
|
|
|
|
public class OtherPhysics {
|
|
Game game;
|
|
World map;
|
|
|
|
public OtherPhysics(Game game, PhysicsBase physics) {
|
|
this.game = game;
|
|
map = game.World;
|
|
physics.OnPlace[Block.Slab] = HandleSlab;
|
|
physics.OnPlace[Block.CobblestoneSlab] = HandleCobblestoneSlab;
|
|
}
|
|
|
|
void HandleSlab(int index, BlockRaw block) {
|
|
if (index < map.OneY) return;
|
|
if (map.blocks[index - map.OneY] != Block.Slab) return;
|
|
|
|
int x = index % map.Width;
|
|
int z = (index / map.Width) % map.Length;
|
|
int y = (index / map.Width) / map.Length;
|
|
game.UpdateBlock(x, y, z, Block.Air);
|
|
game.UpdateBlock(x, y - 1, z, Block.DoubleSlab);
|
|
}
|
|
|
|
void HandleCobblestoneSlab(int index, BlockRaw block) {
|
|
if (index < map.OneY) return;
|
|
if (map.blocks[index - map.OneY] != Block.CobblestoneSlab) return;
|
|
|
|
int x = index % map.Width;
|
|
int z = (index / map.Width) % map.Length;
|
|
int y = (index / map.Width) / map.Length;
|
|
game.UpdateBlock(x, y, z, Block.Air);
|
|
game.UpdateBlock(x, y - 1, z, Block.Cobblestone);
|
|
}
|
|
}
|
|
} |