Skip to content

Commit 33dd133

Browse files
authored
Merge 4ce3f36 into a003661
2 parents a003661 + 4ce3f36 commit 33dd133

19 files changed

+228
-91
lines changed

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/operations/SingleOperation.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
public enum SingleOperation implements IPeripheralOperation<SingleOperationContext> {
1111
DIG(1000, 1),
1212
USE_ON_BLOCK(5000, 1),
13+
UPDATE_BLOCK(500, 1),
1314
SUCK(1000, 1),
1415
USE_ON_ANIMAL(2500, 10),
1516
CAPTURE_ANIMAL(50_000, 100),

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/owner/BlockEntityPeripheralOwner.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.srendi.advancedperipherals.common.addons.computercraft.owner;
22

3+
import dan200.computercraft.api.peripheral.IPeripheral;
34
import de.srendi.advancedperipherals.common.blocks.base.BaseBlock;
45
import de.srendi.advancedperipherals.common.blocks.blockentities.InventoryManagerEntity;
56
import de.srendi.advancedperipherals.common.util.DataStorageUtil;
@@ -20,7 +21,6 @@
2021
import org.jetbrains.annotations.Nullable;
2122

2223
import java.util.Objects;
23-
import java.util.function.Function;
2424

2525
public class BlockEntityPeripheralOwner<T extends BlockEntity & IPeripheralTileEntity> extends BasePeripheralOwner {
2626

@@ -90,7 +90,7 @@ public void markDataStorageDirty() {
9090
}
9191

9292
@Override
93-
public <T1> T1 withPlayer(Function<APFakePlayer, T1> function) {
93+
public <T1> T1 withPlayer(APFakePlayer.Action<T1> function) {
9494
throw new NotImplementedException();
9595
}
9696

@@ -124,4 +124,9 @@ public BlockEntityPeripheralOwner<T> attachFuel() {
124124
attachAbility(PeripheralOwnerAbility.FUEL, new TileEntityFuelAbility<>(this));
125125
return this;
126126
}
127+
128+
@Override
129+
public <U extends IPeripheral> U getConnectedPeripheral(Class<U> type) {
130+
throw new NotImplementedException();
131+
}
127132
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/owner/IPeripheralOwner.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.srendi.advancedperipherals.common.addons.computercraft.owner;
22

3+
import dan200.computercraft.api.peripheral.IPeripheral;
34
import de.srendi.advancedperipherals.common.util.fakeplayer.APFakePlayer;
45
import de.srendi.advancedperipherals.lib.peripherals.IPeripheralOperation;
56
import net.minecraft.core.BlockPos;
@@ -14,7 +15,6 @@
1415
import org.jetbrains.annotations.Nullable;
1516

1617
import java.util.Collection;
17-
import java.util.function.Function;
1818

1919
public interface IPeripheralOwner {
2020

@@ -39,7 +39,7 @@ default Vec3 getCenterPos() {
3939

4040
void markDataStorageDirty();
4141

42-
<T> T withPlayer(Function<APFakePlayer, T> function);
42+
<T> T withPlayer(APFakePlayer.Action<T> function);
4343

4444
ItemStack getToolInMainHand();
4545

@@ -70,4 +70,10 @@ default void attachOperation(Collection<IPeripheralOperation<?>> operations) {
7070
for (IPeripheralOperation<?> operation : operations)
7171
operationAbility.registerOperation(operation);
7272
}
73+
74+
<T extends IPeripheral> T getConnectedPeripheral(Class<T> type);
75+
76+
default boolean hasConnectedPeripheral(Class<? extends IPeripheral> type) {
77+
return getConnectedPeripheral(type) != null;
78+
}
7379
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/owner/PocketPeripheralOwner.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package de.srendi.advancedperipherals.common.addons.computercraft.owner;
22

3+
import dan200.computercraft.api.peripheral.IPeripheral;
34
import dan200.computercraft.api.pocket.IPocketAccess;
45
import de.srendi.advancedperipherals.common.configuration.APConfig;
56
import de.srendi.advancedperipherals.common.util.DataStorageUtil;
67
import de.srendi.advancedperipherals.common.util.fakeplayer.APFakePlayer;
8+
import de.srendi.advancedperipherals.lib.peripherals.IBasePeripheral;
79
import net.minecraft.core.BlockPos;
810
import net.minecraft.core.Direction;
911
import net.minecraft.core.FrontAndTop;
@@ -17,8 +19,6 @@
1719
import org.jetbrains.annotations.NotNull;
1820
import org.jetbrains.annotations.Nullable;
1921

20-
import java.util.function.Function;
21-
2222
public class PocketPeripheralOwner extends BasePeripheralOwner {
2323
private final IPocketAccess pocket;
2424

@@ -97,7 +97,7 @@ public void markDataStorageDirty() {
9797
}
9898

9999
@Override
100-
public <T> T withPlayer(Function<APFakePlayer, T> function) {
100+
public <T> T withPlayer(APFakePlayer.Action<T> function) {
101101
throw new NotImplementedException();
102102
}
103103

@@ -125,4 +125,18 @@ public boolean isMovementPossible(@NotNull Level level, @NotNull BlockPos pos) {
125125
public boolean move(@NotNull Level level, @NotNull BlockPos pos) {
126126
return false;
127127
}
128+
129+
@Override
130+
public <T extends IPeripheral> T getConnectedPeripheral(Class<T> type) {
131+
IPeripheral foundPeripheral = pocket.getUpgrades().values().stream()
132+
.filter(peripheral -> {
133+
if (peripheral == null || type.isInstance(peripheral)) {
134+
return false;
135+
}
136+
return peripheral instanceof IBasePeripheral basePeripheral ? basePeripheral.isEnabled() : true;
137+
})
138+
.findFirst()
139+
.orElse(null);
140+
return (T) foundPeripheral;
141+
}
128142
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/owner/TurtlePeripheralOwner.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import com.mojang.authlib.GameProfile;
44
import dan200.computercraft.ComputerCraft;
5+
import dan200.computercraft.api.peripheral.IPeripheral;
56
import dan200.computercraft.api.turtle.ITurtleAccess;
67
import dan200.computercraft.api.turtle.TurtleSide;
78
import dan200.computercraft.shared.TurtlePermissions;
89
import dan200.computercraft.shared.util.InventoryUtil;
910
import de.srendi.advancedperipherals.common.util.DataStorageUtil;
1011
import de.srendi.advancedperipherals.common.util.fakeplayer.APFakePlayer;
1112
import de.srendi.advancedperipherals.common.util.fakeplayer.FakePlayerProviderTurtle;
13+
import de.srendi.advancedperipherals.lib.peripherals.IBasePeripheral;
1214
import net.minecraft.core.BlockPos;
1315
import net.minecraft.core.Direction;
1416
import net.minecraft.core.FrontAndTop;
@@ -20,7 +22,7 @@
2022
import org.jetbrains.annotations.NotNull;
2123
import org.jetbrains.annotations.Nullable;
2224

23-
import java.util.function.Function;
25+
import java.util.stream.Stream;
2426

2527
public class TurtlePeripheralOwner extends BasePeripheralOwner {
2628
public final ITurtleAccess turtle;
@@ -82,7 +84,7 @@ public void markDataStorageDirty() {
8284
}
8385

8486
@Override
85-
public <T> T withPlayer(Function<APFakePlayer, T> function) {
87+
public <T> T withPlayer(APFakePlayer.Action<T> function) {
8688
return FakePlayerProviderTurtle.withPlayer(turtle, function);
8789
}
8890

@@ -132,4 +134,19 @@ public TurtlePeripheralOwner attachFuel(int maxFuelConsumptionLevel) {
132134
attachAbility(PeripheralOwnerAbility.FUEL, new TurtleFuelAbility(this, maxFuelConsumptionLevel));
133135
return this;
134136
}
137+
138+
@Override
139+
public <T extends IPeripheral> T getConnectedPeripheral(Class<T> type) {
140+
IPeripheral foundPeripheral = Stream.of(TurtleSide.values())
141+
.map(side -> turtle.getPeripheral(side))
142+
.filter(peripheral -> {
143+
if (peripheral == null || type.isInstance(peripheral)) {
144+
return false;
145+
}
146+
return peripheral instanceof IBasePeripheral basePeripheral ? basePeripheral.isEnabled() : true;
147+
})
148+
.findFirst()
149+
.orElse(null);
150+
return (T) foundPeripheral;
151+
}
135152
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/metaphysics/OverpoweredEndAutomataCorePeripheral.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,18 @@
22

33
import dan200.computercraft.api.turtle.ITurtleAccess;
44
import dan200.computercraft.api.turtle.TurtleSide;
5-
import de.srendi.advancedperipherals.AdvancedPeripherals;
65
import de.srendi.advancedperipherals.common.addons.computercraft.operations.AutomataCoreTier;
7-
import de.srendi.advancedperipherals.common.configuration.APConfig;
86

97
public class OverpoweredEndAutomataCorePeripheral extends EndAutomataCorePeripheral {
108

119
public static final String TYPE = "overpowered_end_automata";
1210

1311
public OverpoweredEndAutomataCorePeripheral(ITurtleAccess turtle, TurtleSide side) {
1412
super(TYPE, turtle, side, AutomataCoreTier.OVERPOWERED_TIER2);
15-
setAttribute(ATTR_STORING_TOOL_DURABILITY);
1613
}
1714

18-
public void addRotationCycle(int count) {
19-
super.addRotationCycle(count);
20-
if (AdvancedPeripherals.RANDOM.nextDouble() <= APConfig.METAPHYSICS_CONFIG.overpoweredAutomataBreakChance.get())
21-
owner.destroyUpgrade();
15+
@Override
16+
public boolean canActiveOverpower() {
17+
return true;
2218
}
2319
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/metaphysics/OverpoweredHusbandryAutomataCorePeripheral.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,18 @@
22

33
import dan200.computercraft.api.turtle.ITurtleAccess;
44
import dan200.computercraft.api.turtle.TurtleSide;
5-
import de.srendi.advancedperipherals.AdvancedPeripherals;
65
import de.srendi.advancedperipherals.common.addons.computercraft.operations.AutomataCoreTier;
7-
import de.srendi.advancedperipherals.common.configuration.APConfig;
86

97
public class OverpoweredHusbandryAutomataCorePeripheral extends HusbandryAutomataCorePeripheral {
108

119
public static final String TYPE = "overpowered_husbandry_automata";
1210

1311
public OverpoweredHusbandryAutomataCorePeripheral(ITurtleAccess turtle, TurtleSide side) {
1412
super(TYPE, turtle, side, AutomataCoreTier.OVERPOWERED_TIER2);
15-
setAttribute(ATTR_STORING_TOOL_DURABILITY);
1613
}
1714

1815
@Override
19-
public void addRotationCycle(int count) {
20-
super.addRotationCycle(count);
21-
if (AdvancedPeripherals.RANDOM.nextDouble() <= APConfig.METAPHYSICS_CONFIG.overpoweredAutomataBreakChance.get())
22-
owner.destroyUpgrade();
16+
public boolean canActiveOverpower() {
17+
return true;
2318
}
2419
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/metaphysics/OverpoweredWeakAutomataCorePeripheral.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,18 @@
22

33
import dan200.computercraft.api.turtle.ITurtleAccess;
44
import dan200.computercraft.api.turtle.TurtleSide;
5-
import de.srendi.advancedperipherals.AdvancedPeripherals;
65
import de.srendi.advancedperipherals.common.addons.computercraft.operations.AutomataCoreTier;
7-
import de.srendi.advancedperipherals.common.configuration.APConfig;
86

97
public class OverpoweredWeakAutomataCorePeripheral extends WeakAutomataCorePeripheral {
108

119
public static final String TYPE = "overpowered_weak_automata";
1210

1311
public OverpoweredWeakAutomataCorePeripheral(ITurtleAccess turtle, TurtleSide side) {
1412
super(TYPE, turtle, side, AutomataCoreTier.OVERPOWERED_TIER1);
15-
setAttribute(ATTR_STORING_TOOL_DURABILITY);
1613
}
1714

1815
@Override
19-
public void addRotationCycle(int count) {
20-
super.addRotationCycle(count);
21-
if (AdvancedPeripherals.RANDOM.nextDouble() <= APConfig.METAPHYSICS_CONFIG.overpoweredAutomataBreakChance.get())
22-
owner.destroyUpgrade();
16+
public boolean canActiveOverpower() {
17+
return true;
2318
}
2419
}

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/metaphysics/WeakAutomataCorePeripheral.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,9 @@ public static void addIntegrationPlugin(Function<AutomataCorePeripheral, IPeriph
4848
public boolean isEnabled() {
4949
return APConfig.METAPHYSICS_CONFIG.enableWeakAutomataCore.get();
5050
}
51+
52+
@Override
53+
public double getBreakChance() {
54+
return APConfig.METAPHYSICS_CONFIG.overpoweredAutomataBreakChance.get();
55+
}
5156
}

0 commit comments

Comments
 (0)