示例#1
0
        public override void FromTreeAtributes(ITreeAttribute tree, IWorldAccessor worldAccessForResolve)
        {
            base.FromTreeAtributes(tree, worldAccessForResolve);

            long nowNetworkId = tree.GetLong("networkid");

            if (worldAccessForResolve.Side == EnumAppSide.Client)
            {
                propagationDir = BlockFacing.ALLFACES[tree.GetInt("turnDirFromFacing")];
                gearedRatio    = tree.GetFloat("g");

                if (NetworkId != nowNetworkId)   //don't ever change network settings from tree on server side - networkId is not data to be saved  (otherwise would mess up networks on chunk loading, if BE tree loaded after a BE has already had network assigned on the server by propagation from a neighbour)
                {
                    NetworkId = 0;
                    if (worldAccessForResolve.Side == EnumAppSide.Client)
                    {
                        NetworkId = nowNetworkId;
                        if (NetworkId == 0)
                        {
                            LeaveNetwork();
                            network = null;
                        }
                        else if (manager != null)
                        {
                            network = manager.GetOrCreateNetwork(NetworkId);
                            JoinNetwork(network);
                            Blockentity.MarkDirty();
                        }
                    }
                }
            }
        }
示例#2
0
        public override void Initialize(ICoreAPI api)
        {
            base.Initialize(api);

            Block = api.World.BlockAccessor.GetBlock(pos);

            manager = api.ModLoader.GetModSystem <MechanicalPowerMod>();

            if (api.World.Side == EnumAppSide.Client)
            {
                lightRbs = api.World.BlockAccessor.GetLightRGBs(pos);
            }

            manager.AddDeviceForRender(this);
            if (NetworkId > 0)
            {
                network = manager.GetOrCreateNetwork(NetworkId);
            }

            AxisMapping = new int[3] {
                0, 1, 2
            };
            AxisSign = new int[3] {
                1, 1, 1
            };
        }
示例#3
0
        public override void Initialize(ICoreAPI api, JsonObject properties)
        {
            base.Initialize(api, properties);

            Shape = GetShape();

            manager = Api.ModLoader.GetModSystem <MechanicalPowerMod>();

            if (Api.World.Side == EnumAppSide.Client)
            {
                lightRbs = Api.World.BlockAccessor.GetLightRGBs(Blockentity.Pos);
                if (NetworkId > 0)
                {
                    network = manager.GetOrCreateNetwork(NetworkId);
                    JoinNetwork(network);
                }
            }

            manager.AddDeviceForRender(this);

            AxisSign = new int[3] {
                0, 0, 1
            };
            SetOrientations();

            if (api.Side == EnumAppSide.Server && OutFacingForNetworkDiscovery != null)
            {
                CreateJoinAndDiscoverNetwork(OutFacingForNetworkDiscovery);
            }
        }
示例#4
0
        public override void FromTreeAtributes(ITreeAttribute tree, IWorldAccessor worldAccessForResolve)
        {
            base.FromTreeAtributes(tree, worldAccessForResolve);

            NetworkId = tree.GetLong("networkid");
            if (manager != null)
            {
                network = manager.GetOrCreateNetwork(NetworkId);
            }

            turnDirFromFacing = BlockFacing.ALLFACES[tree.GetInt("turnDirFromFacing")];
        }