Skip to content

Commit 73d5508

Browse files
committed
Allow for more Wire types
1 parent d0a954d commit 73d5508

14 files changed

Lines changed: 57 additions & 35 deletions

File tree

src/main/generated/assets/vivatech/items/wire.json renamed to src/main/generated/assets/vivatech/items/copper_wire.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"model": {
33
"type": "minecraft:model",
4-
"model": "vivatech:item/wire"
4+
"model": "vivatech:item/copper_wire"
55
}
66
}

src/main/generated/assets/vivatech/models/item/wire.json renamed to src/main/generated/assets/vivatech/models/item/copper_wire.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"parent": "minecraft:item/generated",
33
"textures": {
4-
"layer0": "vivatech:item/wire"
4+
"layer0": "vivatech:item/copper_wire"
55
}
66
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"values": [
3+
"vivatech:generator",
4+
"vivatech:gearbox",
5+
"vivatech:wind_turbine",
6+
"vivatech:heater",
7+
"vivatech:static_compensator",
8+
"vivatech:wire_post"
9+
]
10+
}

src/main/java/falseresync/vivatech/data/VivatechModelProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public void generateItemModels(ItemModelGenerators itemModelGenerator) {
6565
itemModelGenerator.generateFlatItem(VivatechItems.WIND_TURBINE, ModelTemplates.FLAT_ITEM);
6666

6767
itemModelGenerator.generateFlatItem(VivatechItems.MORTAR_AND_PESTLE, ModelTemplates.FLAT_ITEM);
68-
itemModelGenerator.generateFlatItem(VivatechItems.WIRE, ModelTemplates.FLAT_ITEM);
68+
itemModelGenerator.generateFlatItem(VivatechItems.COPPER_WIRE, ModelTemplates.FLAT_ITEM);
6969
itemModelGenerator.generateFlatItem(VivatechItems.SCREWDRIVER, ModelTemplates.FLAT_ITEM);
7070
itemModelGenerator.generateFlatItem(VivatechItems.PLIERS, ModelTemplates.FLAT_ITEM);
7171
itemModelGenerator.generateFlatItem(VivatechItems.PROBE, ModelTemplates.FLAT_ITEM);

src/main/java/falseresync/vivatech/world/electricity/PowerSystemsManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import falseresync.vivatech.world.electricity.grid.Appliance;
77
import falseresync.vivatech.world.electricity.grid.GridVertex;
88
import falseresync.vivatech.world.electricity.grid.GridVertexProvider;
9+
import falseresync.vivatech.world.electricity.wire.WireType;
910
import it.unimi.dsi.fastutil.objects.Object2ObjectRBTreeMap;
1011
import it.unimi.dsi.fastutil.objects.ObjectRBTreeSet;
1112
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLevelEvents;
@@ -61,6 +62,8 @@ public static Set<ChunkPos> createChunkPosSet() {
6162
}
6263

6364
public static void init() {
65+
WireType.init();
66+
6467
APPLIANCES.registerSelf(
6568
VivatechBlockEntities.GENERATOR,
6669
VivatechBlockEntities.HEATER,

src/main/java/falseresync/vivatech/world/electricity/grid/Grid.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,24 +33,24 @@ public class Grid {
3333
private final Map<BlockPos, Appliance> appliances;
3434
private final Map<ChunkPos, Set<BlockPos>> trackedChunks;
3535
private final PowerSystem powerSystem;
36-
private final ServerLevel world;
36+
private final ServerLevel level;
3737
private final WireType wireType;
3838
private int overcurrentTicks = 0;
3939
private float lastVoltage = 0;
4040
private float lastCurrent = 0;
4141
private boolean frozen = false;
4242

43-
public Grid(PowerSystem powerSystem, ServerLevel world, WireType wireType) {
43+
public Grid(PowerSystem powerSystem, ServerLevel level, WireType wireType) {
4444
this.powerSystem = powerSystem;
45-
this.world = world;
45+
this.level = level;
4646
this.wireType = wireType;
4747
graph = new SimpleGraph<>(GridEdge.class);
4848
appliances = new Object2ReferenceRBTreeMap<>();
4949
trackedChunks = PowerSystemsManager.createChunkPosKeyedMap();
5050
}
5151

52-
public Grid(PowerSystem powerSystem, ServerLevel world, WireType wireType, Set<GridEdge> edges) {
53-
this(powerSystem, world, wireType);
52+
public Grid(PowerSystem powerSystem, ServerLevel level, WireType wireType, Set<GridEdge> edges) {
53+
this(powerSystem, level, wireType);
5454
edges.forEach(this::connect);
5555
}
5656

@@ -71,8 +71,8 @@ public boolean connect(GridEdge edge) {
7171
}
7272

7373
public boolean connect(GridEdge edge, boolean noWire) {
74-
var vertexU = PowerSystemsManager.GRID_VERTICES.find(world, edge.u(), null);
75-
var vertexV = PowerSystemsManager.GRID_VERTICES.find(world, edge.v(), null);
74+
var vertexU = PowerSystemsManager.GRID_VERTICES.find(level, edge.u(), null);
75+
var vertexV = PowerSystemsManager.GRID_VERTICES.find(level, edge.v(), null);
7676
return connect(vertexU, vertexV, () -> edge, noWire);
7777
}
7878

@@ -248,13 +248,13 @@ private boolean removeAppliance(BlockPos appliancePos) {
248248
private void removeWire(GridEdge edge, Wire.DropRule dropRule) {
249249
var serverWire = edge.asWire(wireType, 0);
250250
powerSystem.removeWire(serverWire);
251-
serverWire.drop(world, wireType, dropRule);
251+
serverWire.drop(level, wireType, dropRule);
252252
}
253253

254254
private void pollChunks() {
255255
var becameFrozen = false;
256256
for (ChunkPos chunkPos : trackedChunks.keySet()) {
257-
if (!world.shouldTickBlocksAt(chunkPos.pack())) {
257+
if (!level.shouldTickBlocksAt(chunkPos.pack())) {
258258
becameFrozen = true;
259259
break;
260260
}
@@ -284,7 +284,7 @@ private void refreshApplianceReferences() {
284284
var appliancesToUpdate = new ObjectOpenHashSet<ReferenceObjectPair<Appliance, GridVertex>>();
285285
for (GridVertex oldVertex : graph.vertexSet()) {
286286
if (oldVertex.appliance() != null) {
287-
var appliance = PowerSystemsManager.APPLIANCES.find(world, oldVertex.appliance().getAppliancePos(), oldVertex.direction());
287+
var appliance = PowerSystemsManager.APPLIANCES.find(level, oldVertex.appliance().getAppliancePos(), oldVertex.direction());
288288
if (oldVertex.appliance() != appliance) {
289289
appliancesToUpdate.add(ReferenceObjectPair.of(appliance, oldVertex));
290290
}
@@ -379,7 +379,7 @@ private void onOvercurrent() {
379379
var mostCentralVertex = inspector.getScores().entrySet().stream().max(Comparator.comparingDouble(Map.Entry::getValue));
380380
mostCentralVertex.map(Map.Entry::getKey).ifPresent(vertex -> {
381381
var edges = graph.edgesOf(vertex);
382-
int randomEntry = world.getRandom().nextInt(edges.size());
382+
int randomEntry = level.getRandom().nextInt(edges.size());
383383
int currentEntry = 0;
384384
for (var edge : edges) {
385385
if (currentEntry == randomEntry) {
@@ -393,24 +393,24 @@ private void onOvercurrent() {
393393

394394
private void burn(GridEdge edge) {
395395
disconnect(edge, Wire.DropRule.PARTIAL);
396-
if (world.getGameRules().get(GameRules.FIRE_SPREAD_RADIUS_AROUND_PLAYER) > 0) {
396+
if (level.getGameRules().get(GameRules.FIRE_SPREAD_RADIUS_AROUND_PLAYER) > 0) {
397397
spreadFire(edge.u());
398398
spreadFire(edge.v());
399399
}
400400
}
401401

402402
private void spreadFire(BlockPos pos) {
403403
int ignitedBlocks = 0;
404-
int blocksToIgnite = world.getRandom().nextIntBetweenInclusive(1, 4);
404+
int blocksToIgnite = level.getRandom().nextIntBetweenInclusive(1, 4);
405405
for (int j = 0; j < 10 && ignitedBlocks < blocksToIgnite; j++) {
406-
var nearbyPos = pos.offset(world.getRandom().nextIntBetweenInclusive(-2, 2), world.getRandom().nextIntBetweenInclusive(-2, 2), world.getRandom().nextIntBetweenInclusive(-2, 2));
407-
if (!world.isLoaded(nearbyPos)) {
406+
var nearbyPos = pos.offset(level.getRandom().nextIntBetweenInclusive(-2, 2), level.getRandom().nextIntBetweenInclusive(-2, 2), level.getRandom().nextIntBetweenInclusive(-2, 2));
407+
if (!level.isLoaded(nearbyPos)) {
408408
continue;
409409
}
410410

411-
if (world.isEmptyBlock(nearbyPos)) {
411+
if (level.isEmptyBlock(nearbyPos)) {
412412
ignitedBlocks += 1;
413-
world.setBlockAndUpdate(nearbyPos, BaseFireBlock.getState(world, nearbyPos));
413+
level.setBlockAndUpdate(nearbyPos, BaseFireBlock.getState(level, nearbyPos));
414414
}
415415
}
416416
}

src/main/java/falseresync/vivatech/world/electricity/wire/Wire.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ public void drop(Level level, WireType type, DropRule dropRule) {
5050
case NO_DROP -> {
5151
}
5252
case PARTIAL ->
53-
Containers.dropItemStack(level, middle.x, middle.y, middle.z, new ItemStack(type.item(), Mth.floor(length * level.getRandom().nextFloat())));
53+
Containers.dropItemStack(level, middle.x, middle.y, middle.z, new ItemStack(type.item().get(), Mth.floor(length * level.getRandom().nextFloat())));
5454
case FULL ->
55-
Containers.dropItemStack(level, middle.x, middle.y, middle.z, new ItemStack(type.item(), Mth.floor(length)));
55+
Containers.dropItemStack(level, middle.x, middle.y, middle.z, new ItemStack(type.item().get(), Mth.floor(length)));
5656
}
5757
}
5858

src/main/java/falseresync/vivatech/world/electricity/wire/WireType.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
import net.minecraft.resources.ResourceKey;
1313
import net.minecraft.world.item.Item;
1414

15-
public record WireType(Item item, int voltage, int maxCurrent, int overcurrentToleranceTime) {
15+
import java.util.function.Supplier;
16+
17+
public record WireType(Supplier<Item> item, int voltage, int maxCurrent, int overcurrentToleranceTime) {
1618
public static final ResourceKey<Registry<WireType>> REGISTRY_KEY = ResourceKey.createRegistryKey(Vivatech.id("wire_types"));
1719
public static final Registry<WireType> REGISTRY =
1820
FabricRegistryBuilder.create(REGISTRY_KEY)
@@ -21,7 +23,7 @@ public record WireType(Item item, int voltage, int maxCurrent, int overcurrentTo
2123
.buildAndRegister();
2224
public static final StreamCodec<RegistryFriendlyByteBuf, Holder<WireType>> PACKET_CODEC = ByteBufCodecs.holderRegistry(REGISTRY_KEY);
2325

24-
public static final WireType V_230 = register("v_230", new WireType(VivatechItems.WIRE, 230, 32, 100));
26+
public static final WireType V_230 = register("v_230", new WireType(() -> VivatechItems.COPPER_WIRE, 230, 32, 100));
2527

2628
public static void init() {
2729
}

src/main/java/falseresync/vivatech/world/item/VivatechCreativeTabs.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class VivatechCreativeTabs {
2424

2525
entries.accept(VivatechItems.WIRE_POST);
2626

27-
entries.accept(VivatechItems.WIRE);
27+
entries.accept(VivatechItems.COPPER_WIRE);
2828
entries.accept(VivatechItems.MORTAR_AND_PESTLE);
2929
entries.accept(VivatechItems.SCREWDRIVER);
3030
entries.accept(VivatechItems.PLIERS);

src/main/java/falseresync/vivatech/world/item/VivatechItems.java

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

33
import falseresync.vivatech.Vivatech;
44
import falseresync.vivatech.world.block.VivatechBlocks;
5+
import falseresync.vivatech.world.electricity.wire.WireType;
56
import net.minecraft.core.Registry;
67
import net.minecraft.core.registries.BuiltInRegistries;
78
import net.minecraft.core.registries.Registries;
@@ -31,8 +32,8 @@ public class VivatechItems {
3132
public static final BlockItem WIRE_POST
3233
= register("wire_post", VivatechBlocks.WIRE_POST);
3334

34-
public static final Item WIRE
35-
= register("wire", WireItem::new);
35+
public static final Item COPPER_WIRE
36+
= register("copper_wire", properties -> new WireItem(properties, WireType.V_230));
3637
public static final Item MORTAR_AND_PESTLE
3738
= register("mortar_and_pestle", MortarAndPestleItem::new, new Item.Properties().stacksTo(1).durability(16));
3839
public static final Item SCREWDRIVER

0 commit comments

Comments
 (0)