Skip to content

Commit 0272e12

Browse files
committed
Multiple bugfixes and configurable void air
- Change machine color to be actual MachineColor, and take either hex or int values - Fix? broken particle textures on machine blocks - Add relocation not supported tag to several blocks (walls, bound machines) - Disable test command - Change allow-outside config to not damage players - this is now handled by a new setting for applying damage - Poison effect on void air changed to confusion and movement slowdown - Fix machines not dropping with their [dyed] colors - Reset player tracking when they leave the Compact dimension
1 parent 7745fa4 commit 0272e12

36 files changed

+234
-114
lines changed

core-api/src/main/java/dev/compactmods/machines/api/dimension/CompactDimension.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ public static DimensionDataStorage getDataStorage(@NotNull LevelStorageSource.Le
5050
}
5151

5252
public static boolean isLevelCompact(Level level) {
53-
return level.dimension().equals(LEVEL_KEY);
53+
return isLevelCompact(level.dimension());
54+
}
55+
56+
public static boolean isLevelCompact(ResourceKey<Level> level) {
57+
return level.equals(LEVEL_KEY);
5458
}
5559
}

core-api/src/main/java/dev/compactmods/machines/api/item/component/MachineComponents.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package dev.compactmods.machines.api.item.component;
22

33
import com.mojang.serialization.Codec;
4+
import dev.compactmods.machines.api.machine.MachineColor;
45
import net.minecraft.core.component.DataComponentType;
56
import net.minecraft.network.codec.ByteBufCodecs;
67
import net.minecraft.resources.ResourceLocation;
@@ -23,8 +24,8 @@ public interface MachineComponents {
2324
.persistent(ResourceLocation.CODEC)
2425
.networkSynchronized(ResourceLocation.STREAM_CODEC);
2526

26-
UnaryOperator<DataComponentType.Builder<Integer>> MACHINE_COLOR = (builder) -> builder
27-
.persistent(Codec.INT)
28-
.networkSynchronized(ByteBufCodecs.INT);
27+
UnaryOperator<DataComponentType.Builder<MachineColor>> MACHINE_COLOR = (builder) -> builder
28+
.persistent(MachineColor.CODEC)
29+
.networkSynchronized(MachineColor.STREAM_CODEC);
2930

3031
}

core-api/src/main/java/dev/compactmods/machines/api/machine/MachineColor.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.minecraft.network.codec.ByteBufCodecs;
77
import net.minecraft.network.codec.StreamCodec;
88
import net.minecraft.util.FastColor;
9+
import net.minecraft.world.item.DyeColor;
910

1011
import java.util.Locale;
1112

@@ -18,7 +19,9 @@ public static MachineColor fromARGB(int argb) {
1819
return new MachineColor(red, green, blue);
1920
}
2021

21-
public static final Codec<MachineColor> CODEC = Codec.STRING.comapFlatMap(str -> {
22+
public static final Codec<MachineColor> INT_CODEC = Codec.INT.xmap(MachineColor::fromARGB, MachineColor::rgb);
23+
24+
public static final Codec<MachineColor> HEX_CODEC = Codec.STRING.comapFlatMap(str -> {
2225
if (!str.startsWith("#")) {
2326
return DataResult.error(() -> "Not a color code: " + str);
2427
} else {
@@ -35,8 +38,14 @@ public static MachineColor fromARGB(int argb) {
3538
}
3639
}, MachineColor::formatValue);
3740

41+
public static final Codec<MachineColor> CODEC = Codec.withAlternative(HEX_CODEC, INT_CODEC);
42+
3843
public static final StreamCodec<ByteBuf, MachineColor> STREAM_CODEC = ByteBufCodecs.INT.map(MachineColor::fromARGB, MachineColor::rgb);
3944

45+
public static MachineColor fromDyeColor(DyeColor color) {
46+
return MachineColor.fromARGB(color.getFireworkColor());
47+
}
48+
4049
public int rgb() {
4150
return FastColor.ARGB32.color(red, green, blue);
4251
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package dev.compactmods.machines.api.room;
22

3+
import dev.compactmods.machines.api.machine.MachineColor;
34
import dev.compactmods.machines.api.room.spatial.IRoomBoundaries;
45
import dev.compactmods.machines.api.room.spatial.IRoomChunks;
56
import dev.compactmods.machines.api.room.spawn.IRoomSpawnManager;
67

78
import java.util.function.Supplier;
89

9-
public record RoomInstance(String code, int defaultMachineColor, IRoomBoundaries boundaries) {
10+
public record RoomInstance(String code, MachineColor defaultMachineColor, IRoomBoundaries boundaries) {
1011

1112
}

core-api/src/main/java/dev/compactmods/machines/api/room/registration/IRoomBuilder.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ public interface IRoomBuilder {
1212

1313
IRoomBuilder owner(UUID owner);
1414

15-
default IRoomBuilder defaultMachineColor(MachineColor color) {
16-
return defaultMachineColor(color.rgb());
17-
}
18-
19-
IRoomBuilder defaultMachineColor(int color);
15+
IRoomBuilder defaultMachineColor(MachineColor color);
2016

2117
RoomInstance build();
2218
}

neoforge-datagen/src/main/java/dev.compactmods.machines.datagen/StateGenerator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ protected void registerStatesAndModels() {
2626
// New machine block
2727
final var m = models
2828
.withExistingParent("block/machine/machine", mcLoc("block/block"))
29+
.texture("particle", modLoc("block/machine/tint"))
2930
.texture("border", modLoc("block/machine/border"))
3031
.texture("tint", modLoc("block/machine/tint"))
3132
.texture("overlay", modLoc("block/machine/overlay"))

neoforge-datagen/src/main/java/dev.compactmods.machines.datagen/tags/BlockTagGenerator.java

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,49 @@
22

33
import dev.compactmods.machines.api.CompactMachines;
44
import dev.compactmods.machines.api.machine.MachineConstants;
5+
import dev.compactmods.machines.dimension.Dimension;
56
import dev.compactmods.machines.machine.Machines;
67
import dev.compactmods.machines.room.Rooms;
78
import net.minecraft.core.HolderLookup;
89
import net.minecraft.data.PackOutput;
910
import net.minecraft.tags.BlockTags;
11+
import net.neoforged.neoforge.common.Tags;
1012
import net.neoforged.neoforge.common.data.BlockTagsProvider;
1113
import net.neoforged.neoforge.common.data.ExistingFileHelper;
1214

1315
import java.util.concurrent.CompletableFuture;
1416

1517
public class BlockTagGenerator extends BlockTagsProvider {
1618

17-
public BlockTagGenerator(PackOutput packOut, ExistingFileHelper files, CompletableFuture<HolderLookup.Provider> lookup) {
18-
super(packOut, lookup, CompactMachines.MOD_ID, files);
19-
}
20-
21-
@Override
22-
protected void addTags(HolderLookup.Provider provider) {
23-
var breakableWall = Rooms.Blocks.BREAKABLE_WALL.get();
24-
var boundMachine = Machines.Blocks.BOUND_MACHINE.get();
25-
var unboundMachine = Machines.Blocks.UNBOUND_MACHINE.get();
26-
27-
tag(MachineConstants.MACHINE_BLOCK)
28-
.add(boundMachine, unboundMachine);
29-
30-
tag(MachineConstants.UNBOUND_MACHINE_BLOCK)
31-
.add(unboundMachine);
32-
33-
tag(BlockTags.MINEABLE_WITH_PICKAXE)
34-
.add(breakableWall)
35-
.add(boundMachine, unboundMachine);
36-
37-
tag(BlockTags.NEEDS_IRON_TOOL)
38-
.add(breakableWall)
39-
.add(boundMachine, unboundMachine);
40-
}
19+
public BlockTagGenerator(PackOutput packOut, ExistingFileHelper files, CompletableFuture<HolderLookup.Provider> lookup) {
20+
super(packOut, lookup, CompactMachines.MOD_ID, files);
21+
}
22+
23+
@Override
24+
protected void addTags(HolderLookup.Provider provider) {
25+
final var breakableWall = Rooms.Blocks.BREAKABLE_WALL.get();
26+
final var solidWall = Rooms.Blocks.SOLID_WALL.get();
27+
final var boundMachine = Machines.Blocks.BOUND_MACHINE.get();
28+
final var unboundMachine = Machines.Blocks.UNBOUND_MACHINE.get();
29+
final var voidAir = Dimension.BLOCK_MACHINE_VOID_AIR.get();
30+
31+
tag(MachineConstants.MACHINE_BLOCK)
32+
.add(boundMachine, unboundMachine);
33+
34+
tag(MachineConstants.UNBOUND_MACHINE_BLOCK)
35+
.add(unboundMachine);
36+
37+
tag(BlockTags.MINEABLE_WITH_PICKAXE)
38+
.add(breakableWall)
39+
.add(boundMachine, unboundMachine);
40+
41+
tag(BlockTags.NEEDS_IRON_TOOL)
42+
.add(breakableWall)
43+
.add(boundMachine, unboundMachine);
44+
45+
tag(Tags.Blocks.RELOCATION_NOT_SUPPORTED)
46+
.add(boundMachine)
47+
.add(solidWall)
48+
.add(voidAir);
49+
}
4150
}

neoforge-main/build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,16 @@ repositories {
121121
}
122122
}
123123

124-
maven("https://maven.pkg.github.com/compactmods/compactmachines-core") {
124+
maven("https://maven.pkg.github.com/compactmods/feather") {
125125
name = "Github PKG Core"
126126
credentials {
127127
username = project.findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR")
128128
password = project.findProperty("gpr.token") as String? ?: System.getenv("GITHUB_TOKEN")
129129
}
130+
131+
content {
132+
includeGroup("dev.compactmods")
133+
}
130134
}
131135

132136
maven("https://maven.blamejared.com/") {

neoforge-main/src/main/java/dev/compactmods/machines/config/CommonConfig.java renamed to neoforge-main/src/main/java/dev/compactmods/machines/CommonConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.compactmods.machines.config;
1+
package dev.compactmods.machines;
22

33
import net.neoforged.neoforge.common.ModConfigSpec;
44

neoforge-main/src/main/java/dev/compactmods/machines/CompactMachinesCommon.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
import dev.compactmods.machines.api.CompactMachines;
44
import dev.compactmods.machines.command.Commands;
55
import dev.compactmods.machines.compat.InterModCompat;
6-
import dev.compactmods.machines.config.CommonConfig;
7-
import dev.compactmods.machines.config.ServerConfig;
6+
import dev.compactmods.machines.server.ServerConfig;
87
import dev.compactmods.machines.dimension.Dimension;
98
import dev.compactmods.machines.dimension.WorldBorderFixer;
109
import dev.compactmods.machines.machine.Machines;

0 commit comments

Comments
 (0)