protected virtual void DoDeviceStart() { if (capacitor >= requiredAmps) { tickCounter = 0; deviceState = enDeviceState.RUNNING; if (Api.World.Side == EnumAppSide.Client && animUtil != null) { if (!animInit) { float rotY = Block.Shape.rotateY; animUtil.InitializeAnimator("process", new Vec3f(0, rotY, 0)); animInit = true; } animUtil.StartAnimation(new AnimationMetaData() { Animation = "process", Code = "process", AnimationSpeed = 1f, EaseInSpeed = 1, EaseOutSpeed = 1, Weight = 1, BlendMode = EnumAnimationBlendMode.Add }); Api.World.PlaySoundAt(new AssetLocation("sounds/doorslide"), Pos.X, Pos.Y, Pos.Z, null, false, 8, 1); } //sounds/blocks/doorslide.ogg DoDeviceProcessing(); } else { DoFailedStart(); } }
protected virtual void DoDeviceStart() { if (Capacitor >= requiredAmps) { tickCounter = 0; deviceState = enDeviceState.RUNNING; //sounds/blocks/doorslide.ogg DoDeviceProcessing(); } else { DoFailedStart(); } }
//Do whatever needs doing on a successful cycle protected virtual void DoDeviceComplete() { deviceState = enDeviceState.IDLE; Block block = Api.World.GetBlock(new AssetLocation("game:bowl-raw")); ItemStack outputStack = new ItemStack(block); Vec3d pos = Pos.ToVec3d(); pos.Y += 0.5f; Vec3d vel = new Vec3d(0, 0.25f, 0); Api.World.SpawnItemEntity(outputStack, pos, vel); //Api.World.SpawnItemEntity(grindedStack, this.Pos.ToVec3d().Add(0.5 + face.Normalf.X * 0.7, 0.75, 0.5 + face.Normalf.Z * 0.7), new Vec3d(face.Normalf.X * 0.02f, 0, face.Normalf.Z * 0.02f)); if (Api.World.Side == EnumAppSide.Client && animUtil != null) { animUtil.StopAnimation("process"); } }
protected virtual void UsePower() { if (!isOn) { return; } if (DeviceState == enDeviceState.IDLE || DeviceState == enDeviceState.MATERIALHOLD) { DoDeviceStart(); } else if (deviceState == enDeviceState.WARMUP) { tickCounter++; if (tickCounter == 10) { tickCounter = 0; deviceState = enDeviceState.IDLE; } } else { DoDeviceProcessing(); } }
public override void FromTreeAttributes(ITreeAttribute tree, IWorldAccessor worldAccessForResolve) { base.FromTreeAttributes(tree, worldAccessForResolve); tickCounter = tree.GetInt("tickCounter"); deviceState = (enDeviceState)tree.GetInt("deviceState"); }
//Do whatever needs doing on a successful cycle protected virtual void DoDeviceComplete() { deviceState = enDeviceState.IDLE; }