Remove Workaround To Fixed Bug
All checks were successful
EnergonRelics/pipeline/head This commit looks good
All checks were successful
EnergonRelics/pipeline/head This commit looks good
This commit is contained in:
parent
a86581d913
commit
94a4364826
@ -1,6 +1,5 @@
|
||||
package com.thebrokenrail.energonrelics.block.entity;
|
||||
|
||||
import com.thebrokenrail.energonrelics.EnergonRelics;
|
||||
import com.thebrokenrail.energonrelics.block.BlockBreakerBlock;
|
||||
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
|
||||
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
|
||||
@ -10,7 +9,6 @@ import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.explosion.Explosion;
|
||||
|
||||
@ -42,7 +40,7 @@ public class BlockBreakerBlockEntity extends EnergyReceiverBlockEntity {
|
||||
|
||||
@Override
|
||||
protected void tickEnergy() {
|
||||
addAction(Action.createBlockStatePropertyAction(HardcodedConfig.BLOCK_BREAKER_ENERGY_REQUIRED_IDLE, BlockBreakerBlock.POWERED, true, false, new Identifier(EnergonRelics.NAMESPACE, "block_breaker_idle")));
|
||||
addAction(Action.createBlockStatePropertyAction(HardcodedConfig.BLOCK_BREAKER_ENERGY_REQUIRED_IDLE, BlockBreakerBlock.POWERED, true, false));
|
||||
|
||||
if (getCachedState().get(BlockBreakerBlock.POWERED)) {
|
||||
BlockPos targetPos = getPos().offset(getCachedState().get(BlockBreakerBlock.FACING));
|
||||
@ -55,7 +53,7 @@ public class BlockBreakerBlockEntity extends EnergyReceiverBlockEntity {
|
||||
Block.dropStacks(target, world, targetPos, target.getBlock().hasBlockEntity() ? world.getBlockEntity(targetPos) : null, null, new ItemStack(HardcodedConfig.BLOCK_BREAKER_ITEM));
|
||||
world.breakBlock(targetPos, false);
|
||||
progress = 0;
|
||||
}, (world, pos, state) -> progress = 0, new Identifier(EnergonRelics.NAMESPACE, "block_breaker_break")));
|
||||
}, (world, pos, state) -> progress = 0));
|
||||
}
|
||||
|
||||
progress++;
|
||||
|
@ -16,7 +16,6 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.particle.ParticleTypes;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Box;
|
||||
@ -225,7 +224,7 @@ public class DefensiveLaserBlockEntity extends EnergyReceiverBlockEntity {
|
||||
@Override
|
||||
protected void tickEnergy() {
|
||||
assert getWorld() != null;
|
||||
addAction(Action.createBlockStatePropertyAction(HardcodedConfig.DEFENSIVE_LASER_IDLE_ENERGY_REQUIRED, DefensiveLaserBlock.POWERED, true, false, new Identifier(EnergonRelics.NAMESPACE, "defensive_laser_idle")));
|
||||
addAction(Action.createBlockStatePropertyAction(HardcodedConfig.DEFENSIVE_LASER_IDLE_ENERGY_REQUIRED, DefensiveLaserBlock.POWERED, true, false));
|
||||
if (getCachedState().get(DefensiveLaserBlock.POWERED)) {
|
||||
if (countdown > 0) {
|
||||
countdown--;
|
||||
@ -234,7 +233,7 @@ public class DefensiveLaserBlockEntity extends EnergyReceiverBlockEntity {
|
||||
addAction(new Action(HardcodedConfig.DEFENSIVE_LASER_FIRE_ENERGY_REQUIRED, (world, pos, state) -> {
|
||||
firing = false;
|
||||
fire(world, pos);
|
||||
}, (world, pos, state) -> firing = false, new Identifier(EnergonRelics.NAMESPACE, "defensive_laser_fire")));
|
||||
}, (world, pos, state) -> firing = false));
|
||||
target = null;
|
||||
firing = true;
|
||||
} else if (countdown < 1 && !firing) {
|
||||
|
@ -1,12 +1,10 @@
|
||||
package com.thebrokenrail.energonrelics.block.entity;
|
||||
|
||||
import com.thebrokenrail.energonrelics.EnergonRelics;
|
||||
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
|
||||
import com.thebrokenrail.energonrelics.block.EnergonLightBlock;
|
||||
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
|
||||
import com.thebrokenrail.energonrelics.energy.core.util.Action;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
public class EnergonLightBlockEntity extends EnergyReceiverBlockEntity {
|
||||
public EnergonLightBlockEntity(BlockEntityType<?> type) {
|
||||
@ -15,6 +13,6 @@ public class EnergonLightBlockEntity extends EnergyReceiverBlockEntity {
|
||||
|
||||
@Override
|
||||
protected void tickEnergy() {
|
||||
addAction(Action.createBlockStatePropertyAction(HardcodedConfig.ENERGON_LIGHT_ENERGY_REQUIRED, EnergonLightBlock.POWERED, true, false, new Identifier(EnergonRelics.NAMESPACE, "energon_light")));
|
||||
addAction(Action.createBlockStatePropertyAction(HardcodedConfig.ENERGON_LIGHT_ENERGY_REQUIRED, EnergonLightBlock.POWERED, true, false));
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,6 @@ import com.thebrokenrail.energonrelics.energy.helper.EnergyGenerator;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.world.World;
|
||||
@ -19,12 +18,11 @@ public class PassiveBatteryControllerBlockEntity extends EnergyReceiverBlockEnti
|
||||
super(type);
|
||||
}
|
||||
|
||||
private static class UnlimitedAction extends Action.UniqueAction implements Action.PropagatedAction {
|
||||
private static class UnlimitedAction implements Action.PropagatedAction {
|
||||
private final World world;
|
||||
private final BlockPos pos;
|
||||
|
||||
private UnlimitedAction(World world, BlockPos pos) {
|
||||
super(new Identifier(EnergonRelics.NAMESPACE, "active_battery_controller"), pos);
|
||||
this.world = world;
|
||||
this.pos = pos;
|
||||
}
|
||||
@ -58,7 +56,7 @@ public class PassiveBatteryControllerBlockEntity extends EnergyReceiverBlockEnti
|
||||
PassiveBatteryControllerBlockEntity battery = (PassiveBatteryControllerBlockEntity) entity;
|
||||
battery.setEnergy(battery.getEnergy() + charge);
|
||||
}
|
||||
}, (world, pos, state) -> {}, new Identifier(EnergonRelics.NAMESPACE, "passive_battery_controller")));
|
||||
}, (world, pos, state) -> {}));
|
||||
} else {
|
||||
propagateAction(new UnlimitedAction(getWorld(), getPos()));
|
||||
}
|
||||
|
@ -8,7 +8,6 @@ import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
|
||||
import com.thebrokenrail.energonrelics.energy.core.util.Action;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
|
||||
@ -21,7 +20,7 @@ public class ForcefieldProjectorBlockEntity extends EnergyReceiverBlockEntity {
|
||||
protected void tickEnergy() {
|
||||
assert getWorld() != null;
|
||||
|
||||
addAction(Action.createBlockStatePropertyAction(HardcodedConfig.FORCEFIELD_PROJECTOR_ENERGY_REQUIRED, ForcefieldProjectorBlock.POWERED, true, false, new Identifier(EnergonRelics.NAMESPACE, "forcefield_projector")));
|
||||
addAction(Action.createBlockStatePropertyAction(HardcodedConfig.FORCEFIELD_PROJECTOR_ENERGY_REQUIRED, ForcefieldProjectorBlock.POWERED, true, false));
|
||||
if (getCachedState().get(ForcefieldProjectorBlock.POWERED)) {
|
||||
Direction facing = getCachedState().get(ForcefieldProjectorBlock.FACING);
|
||||
BlockState state = EnergonRelics.FORCEFIELD_BLOCK.getDefaultState().with(ForcefieldBlock.FACING, facing);
|
||||
|
@ -20,7 +20,6 @@ import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.registry.RegistryKey;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -32,10 +31,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit
|
||||
|
||||
public final void addPropagatedAction(Action.PropagatedAction action) {
|
||||
if (isEnergyProvider()) {
|
||||
if (!completedActions.contains(action)) {
|
||||
handlePropagatedAction(action);
|
||||
completedActions.add(action);
|
||||
}
|
||||
} else {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
@ -78,8 +74,6 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit
|
||||
return false;
|
||||
}
|
||||
|
||||
private final List<Action.PropagatedAction> completedActions = new ArrayList<>();
|
||||
|
||||
protected void handlePropagatedAction(Action.PropagatedAction action) {
|
||||
if (!isEnergyProvider()) {
|
||||
throw new UnsupportedOperationException();
|
||||
@ -90,7 +84,6 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit
|
||||
}
|
||||
|
||||
public List<EnergyProviderBlockEntity> startTick() {
|
||||
completedActions.clear();
|
||||
if (isEnergyProvider()) {
|
||||
NetworkComponent component = NetworkComponent.getInstance((ServerWorld) Objects.requireNonNull(getWorld()));
|
||||
List<BlockPosWithDimension> sources = component.getSourcePos(EnergonRelics.NETWORK_CHIP_ITEM.getID(stack));
|
||||
|
@ -3,12 +3,9 @@ package com.thebrokenrail.energonrelics.energy.core.util;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.state.property.Property;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Action {
|
||||
public interface ActionFunction {
|
||||
void run(World world, BlockPos pos, BlockState state);
|
||||
@ -17,16 +14,14 @@ public class Action {
|
||||
private final long cost;
|
||||
private final ActionFunction success;
|
||||
private final ActionFunction fail;
|
||||
private final Identifier id;
|
||||
|
||||
public Action(long cost, ActionFunction success, ActionFunction fail, Identifier id) {
|
||||
public Action(long cost, ActionFunction success, ActionFunction fail) {
|
||||
this.cost = cost;
|
||||
this.success = success;
|
||||
this.fail = fail;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public static <T extends Comparable<T>> Action createBlockStatePropertyAction(long cost, Property<T> property, T successValue, T failureValue, Identifier id) {
|
||||
public static <T extends Comparable<T>> Action createBlockStatePropertyAction(long cost, Property<T> property, T successValue, T failureValue) {
|
||||
return new Action(cost, (world, pos, state) -> {
|
||||
if (!state.get(property).equals(successValue)) {
|
||||
world.setBlockState(pos, state.with(property, successValue));
|
||||
@ -35,7 +30,7 @@ public class Action {
|
||||
if (!state.get(property).equals(failureValue)) {
|
||||
world.setBlockState(pos, state.with(property, failureValue));
|
||||
}
|
||||
}, id);
|
||||
});
|
||||
}
|
||||
|
||||
public interface PropagatedAction {
|
||||
@ -44,28 +39,7 @@ public class Action {
|
||||
void pay(long amount);
|
||||
}
|
||||
|
||||
public static class UniqueAction {
|
||||
private final Identifier id;
|
||||
private final BlockPos pos;
|
||||
|
||||
public UniqueAction(Identifier id, BlockPos pos) {
|
||||
this.id = id;
|
||||
this.pos = pos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
} else if (obj instanceof UniqueAction) {
|
||||
return Objects.equals(id, ((UniqueAction) obj).id) && Objects.equals(pos, ((UniqueAction) obj).pos);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PropagatedActionImpl extends UniqueAction implements PropagatedAction {
|
||||
public static class PropagatedActionImpl implements PropagatedAction {
|
||||
private final Action action;
|
||||
private final World world;
|
||||
private final BlockPos pos;
|
||||
@ -75,7 +49,6 @@ public class Action {
|
||||
private long amountPaid = 0;
|
||||
|
||||
public PropagatedActionImpl(Action action, World world, BlockPos pos, Block block) {
|
||||
super(action.id, pos);
|
||||
this.action = action;
|
||||
this.world = world;
|
||||
this.pos = pos;
|
||||
|
Reference in New Issue
Block a user