Skip to content

Commit d1c7147

Browse files
committed
FOR REALSIES THIS TIME
1 parent b0fc5ec commit d1c7147

File tree

9 files changed

+169
-171
lines changed

9 files changed

+169
-171
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ org.gradle.jvmargs=-Xmx3G
44
org.gradle.daemon=true
55
org.gradle.parallel=true
66
# org.gradle.caching=true
7-
org.gradle.configuration-cache=true
7+
# org.gradle.configuration-cache=true
88

99
neoForge.parchment.minecraftVersion=1.20.6
1010
neoForge.parchment.mappingsVersion=2024.05.01
Lines changed: 57 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,57 @@
1-
package dev.compactmods.machines.datagen.loot;
2-
3-
import dev.compactmods.machines.data.functions.CopyRoomBindingFunction;
4-
import dev.compactmods.machines.machine.Machines;
5-
import dev.compactmods.machines.room.Rooms;
6-
import net.minecraft.core.HolderLookup;
7-
import net.minecraft.data.loot.BlockLootSubProvider;
8-
import net.minecraft.world.flag.FeatureFlags;
9-
import net.minecraft.world.level.block.Block;
10-
import net.minecraft.world.level.storage.loot.LootPool;
11-
import net.minecraft.world.level.storage.loot.LootTable;
12-
import net.minecraft.world.level.storage.loot.entries.LootItem;
13-
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition;
14-
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
15-
16-
import java.util.Collections;
17-
import java.util.Set;
18-
19-
public class BlockLootGenerator extends BlockLootSubProvider {
20-
21-
public BlockLootGenerator(HolderLookup.Provider holderLookup) {
22-
super(Collections.emptySet(), FeatureFlags.REGISTRY.allFlags(), holderLookup);
23-
}
24-
25-
@Override
26-
protected Iterable<Block> getKnownBlocks() {
27-
return Set.of(Rooms.Blocks.BREAKABLE_WALL.get(), Machines.Blocks.BOUND_MACHINE.get());
28-
}
29-
30-
@Override
31-
protected void generate() {
32-
this.add(Rooms.Blocks.BREAKABLE_WALL.get(), LootTable.lootTable().withPool(LootPool
33-
.lootPool()
34-
.name(Rooms.Blocks.BREAKABLE_WALL.getId().toString())
35-
.setRolls(ConstantValue.exactly(1))
36-
.when(ExplosionCondition.survivesExplosion())
37-
.add(LootItem.lootTableItem(Rooms.Items.BREAKABLE_WALL.get()))));
38-
39-
var drop = LootItem.lootTableItem(Machines.Items.BOUND_MACHINE.get());
40-
41-
final var lootPoolCM = LootPool.lootPool()
42-
.setRolls(ConstantValue.exactly(1))
43-
.when(ExplosionCondition.survivesExplosion())
44-
.apply(CopyRoomBindingFunction::new)
45-
.add(drop);
46-
47-
final var cmLootTable = LootTable.lootTable().withPool(lootPoolCM);
48-
49-
this.add(Machines.Blocks.BOUND_MACHINE.get(), cmLootTable);
50-
}
51-
}
1+
package dev.compactmods.machines.datagen.loot;
2+
3+
import dev.compactmods.machines.machine.Machines;
4+
import dev.compactmods.machines.room.Rooms;
5+
import net.minecraft.core.HolderLookup;
6+
import net.minecraft.data.loot.BlockLootSubProvider;
7+
import net.minecraft.world.flag.FeatureFlags;
8+
import net.minecraft.world.level.block.Block;
9+
import net.minecraft.world.level.storage.loot.LootPool;
10+
import net.minecraft.world.level.storage.loot.LootTable;
11+
import net.minecraft.world.level.storage.loot.entries.LootItem;
12+
import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction;
13+
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition;
14+
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
15+
16+
import java.util.Collections;
17+
import java.util.Set;
18+
19+
public class BlockLootGenerator extends BlockLootSubProvider {
20+
21+
public BlockLootGenerator(HolderLookup.Provider holderLookup) {
22+
super(Collections.emptySet(), FeatureFlags.REGISTRY.allFlags(), holderLookup);
23+
}
24+
25+
@Override
26+
protected Iterable<Block> getKnownBlocks() {
27+
return Set.of(Rooms.Blocks.BREAKABLE_WALL.get(),
28+
Machines.Blocks.BOUND_MACHINE.get(),
29+
Machines.Blocks.UNBOUND_MACHINE.get());
30+
}
31+
32+
@Override
33+
protected void generate() {
34+
this.add(Rooms.Blocks.BREAKABLE_WALL.get(), LootTable.lootTable().withPool(LootPool
35+
.lootPool()
36+
.name(Rooms.Blocks.BREAKABLE_WALL.getId().toString())
37+
.setRolls(ConstantValue.exactly(1))
38+
.when(ExplosionCondition.survivesExplosion())
39+
.add(LootItem.lootTableItem(Rooms.Items.BREAKABLE_WALL.get()))));
40+
41+
this.add(Machines.Blocks.UNBOUND_MACHINE.get(), LootTable.lootTable().withPool(LootPool.lootPool()
42+
.setRolls(ConstantValue.exactly(1))
43+
.when(ExplosionCondition.survivesExplosion())
44+
.apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY)
45+
.include(Machines.DataComponents.MACHINE_COLOR.get())
46+
.include(Machines.DataComponents.ROOM_TEMPLATE_ID.get()))
47+
.add(LootItem.lootTableItem(Machines.Items.UNBOUND_MACHINE.get()))));
48+
49+
this.add(Machines.Blocks.BOUND_MACHINE.get(), LootTable.lootTable().withPool(LootPool.lootPool()
50+
.setRolls(ConstantValue.exactly(1))
51+
.when(ExplosionCondition.survivesExplosion())
52+
.apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY)
53+
.include(Machines.DataComponents.MACHINE_COLOR.get())
54+
.include(Machines.DataComponents.BOUND_ROOM_CODE.get()))
55+
.add(LootItem.lootTableItem(Machines.Items.BOUND_MACHINE.get()))));
56+
}
57+
}
Lines changed: 64 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,64 @@
1-
package dev.compactmods.machines;
2-
3-
import dev.compactmods.machines.api.CompactMachines;
4-
import dev.compactmods.machines.command.Commands;
5-
import dev.compactmods.machines.compat.InterModCompat;
6-
import dev.compactmods.machines.config.CommonConfig;
7-
import dev.compactmods.machines.config.ServerConfig;
8-
import dev.compactmods.machines.data.functions.LootFunctions;
9-
import dev.compactmods.machines.dimension.Dimension;
10-
import dev.compactmods.machines.dimension.WorldBorderFixer;
11-
import dev.compactmods.machines.machine.Machines;
12-
import dev.compactmods.machines.network.CMNetworks;
13-
import dev.compactmods.machines.room.Rooms;
14-
import dev.compactmods.machines.room.block.ProtectedBlockEventHandler;
15-
import dev.compactmods.machines.room.upgrade.RoomUpgrades;
16-
import dev.compactmods.machines.shrinking.Shrinking;
17-
import dev.compactmods.machines.villager.Villagers;
18-
import net.minecraft.util.FastColor;
19-
import net.neoforged.bus.api.IEventBus;
20-
import net.neoforged.fml.ModContainer;
21-
import net.neoforged.fml.common.Mod;
22-
import net.neoforged.fml.config.ModConfig;
23-
import net.neoforged.neoforge.common.NeoForge;
24-
25-
@Mod(CompactMachines.MOD_ID)
26-
public class CompactMachinesCommon {
27-
28-
public static final int BRAND_MACHINE_COLOR = FastColor.ARGB32.color(255, 248, 246, 76);
29-
30-
@SuppressWarnings("unused")
31-
public CompactMachinesCommon(IEventBus modBus, ModContainer modContainer) {
32-
initConfigs(modContainer);
33-
prepare();
34-
registerEvents(modBus);
35-
36-
CMRegistries.setup(modBus);
37-
}
38-
39-
private static void initConfigs(ModContainer modContainer) {
40-
modContainer.registerConfig(ModConfig.Type.COMMON, CommonConfig.CONFIG);
41-
modContainer.registerConfig(ModConfig.Type.SERVER, ServerConfig.CONFIG);
42-
}
43-
44-
private static void prepare() {
45-
Machines.prepare();
46-
Shrinking.prepare();
47-
Rooms.prepare();
48-
RoomUpgrades.prepare();
49-
Dimension.prepare();
50-
Commands.prepare();
51-
LootFunctions.prepare();
52-
Villagers.prepare();
53-
}
54-
55-
private static void registerEvents(IEventBus modBus) {
56-
Rooms.registerEvents(modBus);
57-
RoomUpgrades.registerEvents(modBus);
58-
WorldBorderFixer.registerEvents();
59-
60-
modBus.addListener(CMNetworks::onPacketRegistration);
61-
modBus.addListener(InterModCompat::enqueueCompatMessages);
62-
63-
NeoForge.EVENT_BUS.addListener(Commands::onCommandsRegister);
64-
NeoForge.EVENT_BUS.addListener(ProtectedBlockEventHandler::leftClickBlock);
65-
}
66-
}
1+
package dev.compactmods.machines;
2+
3+
import dev.compactmods.machines.api.CompactMachines;
4+
import dev.compactmods.machines.command.Commands;
5+
import dev.compactmods.machines.compat.InterModCompat;
6+
import dev.compactmods.machines.config.CommonConfig;
7+
import dev.compactmods.machines.config.ServerConfig;
8+
import dev.compactmods.machines.dimension.Dimension;
9+
import dev.compactmods.machines.dimension.WorldBorderFixer;
10+
import dev.compactmods.machines.machine.Machines;
11+
import dev.compactmods.machines.network.CMNetworks;
12+
import dev.compactmods.machines.room.Rooms;
13+
import dev.compactmods.machines.room.block.ProtectedBlockEventHandler;
14+
import dev.compactmods.machines.room.upgrade.RoomUpgrades;
15+
import dev.compactmods.machines.shrinking.Shrinking;
16+
import dev.compactmods.machines.villager.Villagers;
17+
import net.minecraft.util.FastColor;
18+
import net.neoforged.bus.api.IEventBus;
19+
import net.neoforged.fml.ModContainer;
20+
import net.neoforged.fml.common.Mod;
21+
import net.neoforged.fml.config.ModConfig;
22+
import net.neoforged.neoforge.common.NeoForge;
23+
24+
@Mod(CompactMachines.MOD_ID)
25+
public class CompactMachinesCommon {
26+
27+
public static final int BRAND_MACHINE_COLOR = FastColor.ARGB32.color(255, 248, 246, 76);
28+
29+
@SuppressWarnings("unused")
30+
public CompactMachinesCommon(IEventBus modBus, ModContainer modContainer) {
31+
initConfigs(modContainer);
32+
prepare();
33+
registerEvents(modBus);
34+
35+
CMRegistries.setup(modBus);
36+
}
37+
38+
private static void initConfigs(ModContainer modContainer) {
39+
modContainer.registerConfig(ModConfig.Type.COMMON, CommonConfig.CONFIG);
40+
modContainer.registerConfig(ModConfig.Type.SERVER, ServerConfig.CONFIG);
41+
}
42+
43+
private static void prepare() {
44+
Machines.prepare();
45+
Shrinking.prepare();
46+
Rooms.prepare();
47+
RoomUpgrades.prepare();
48+
Dimension.prepare();
49+
Commands.prepare();
50+
Villagers.prepare();
51+
}
52+
53+
private static void registerEvents(IEventBus modBus) {
54+
Rooms.registerEvents(modBus);
55+
RoomUpgrades.registerEvents(modBus);
56+
WorldBorderFixer.registerEvents();
57+
58+
modBus.addListener(CMNetworks::onPacketRegistration);
59+
modBus.addListener(InterModCompat::enqueueCompatMessages);
60+
61+
NeoForge.EVENT_BUS.addListener(Commands::onCommandsRegister);
62+
NeoForge.EVENT_BUS.addListener(ProtectedBlockEventHandler::leftClickBlock);
63+
}
64+
}

neoforge-main/src/main/java/dev/compactmods/machines/data/functions/CopyRoomBindingFunction.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

neoforge-main/src/main/java/dev/compactmods/machines/data/functions/LootFunctions.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

neoforge-main/src/main/java/dev/compactmods/machines/machine/Machines.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,17 @@ static void prepare() {
111111
}
112112

113113
interface DataComponents {
114+
String KEY_ROOM_TEMPLATE = "room_template";
115+
String KEY_ROOM_CODE = "room_code";
116+
114117
DeferredHolder<DataComponentType<?>, DataComponentType<String>> BOUND_ROOM_CODE = CMRegistries.DATA_COMPONENTS
115-
.registerComponentType("room_code", MachineComponents.BOUND_ROOM_CODE);
118+
.registerComponentType(KEY_ROOM_CODE, MachineComponents.BOUND_ROOM_CODE);
116119

117120
DeferredHolder<DataComponentType<?>, DataComponentType<Integer>> MACHINE_COLOR = CMRegistries.DATA_COMPONENTS
118121
.registerComponentType("machine_color", MachineComponents.MACHINE_COLOR);
119122

120123
DeferredHolder<DataComponentType<?>, DataComponentType<ResourceLocation>> ROOM_TEMPLATE_ID = CMRegistries.DATA_COMPONENTS
121-
.registerComponentType("room_template", MachineComponents.ROOM_TEMPLATE_ID);
124+
.registerComponentType(KEY_ROOM_TEMPLATE, MachineComponents.ROOM_TEMPLATE_ID);
122125

123126
static void prepare() {
124127
}

neoforge-main/src/main/java/dev/compactmods/machines/machine/block/BoundCompactMachineBlockEntity.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.minecraft.core.BlockPos;
99
import net.minecraft.core.GlobalPos;
1010
import net.minecraft.core.HolderLookup;
11+
import net.minecraft.core.component.DataComponentMap;
1112
import net.minecraft.nbt.CompoundTag;
1213
import net.minecraft.network.chat.Component;
1314
import net.minecraft.server.level.ServerLevel;
@@ -33,6 +34,24 @@ public BoundCompactMachineBlockEntity(BlockPos pos, BlockState state) {
3334
super(Machines.BlockEntities.MACHINE.get(), pos, state);
3435
}
3536

37+
@Override
38+
protected void applyImplicitComponents(DataComponentInput components) {
39+
super.applyImplicitComponents(components);
40+
this.roomCode = components.get(Machines.DataComponents.BOUND_ROOM_CODE);
41+
}
42+
43+
@Override
44+
protected void collectImplicitComponents(DataComponentMap.Builder builder) {
45+
super.collectImplicitComponents(builder);
46+
builder.set(Machines.DataComponents.BOUND_ROOM_CODE, this.roomCode);
47+
}
48+
49+
@Override
50+
public void removeComponentsFromTag(CompoundTag tag) {
51+
super.removeComponentsFromTag(tag);
52+
tag.remove(Machines.DataComponents.KEY_ROOM_CODE);
53+
}
54+
3655
@Override
3756
protected void loadAdditional(CompoundTag nbt, HolderLookup.Provider holders) {
3857
super.loadAdditional(nbt, holders);

neoforge-main/src/main/java/dev/compactmods/machines/machine/block/UnboundCompactMachineEntity.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import dev.compactmods.machines.machine.Machines;
66
import net.minecraft.core.BlockPos;
77
import net.minecraft.core.HolderLookup;
8+
import net.minecraft.core.component.DataComponentMap;
89
import net.minecraft.nbt.CompoundTag;
910
import net.minecraft.resources.ResourceLocation;
1011
import net.minecraft.world.level.block.entity.BlockEntity;
@@ -23,6 +24,24 @@ public UnboundCompactMachineEntity(BlockPos pos, BlockState state) {
2324
this.templateId = null;
2425
}
2526

27+
@Override
28+
protected void applyImplicitComponents(DataComponentInput components) {
29+
super.applyImplicitComponents(components);
30+
this.templateId = components.get(Machines.DataComponents.ROOM_TEMPLATE_ID);
31+
}
32+
33+
@Override
34+
protected void collectImplicitComponents(DataComponentMap.Builder builder) {
35+
super.collectImplicitComponents(builder);
36+
builder.set(Machines.DataComponents.ROOM_TEMPLATE_ID, this.templateId);
37+
}
38+
39+
@Override
40+
public void removeComponentsFromTag(CompoundTag tag) {
41+
super.removeComponentsFromTag(tag);
42+
tag.remove(Machines.DataComponents.KEY_ROOM_TEMPLATE);
43+
}
44+
2645
@Override
2746
public void loadAdditional(@NotNull CompoundTag nbt, HolderLookup.Provider holders) {
2847
super.loadAdditional(nbt, holders);

neoforge-main/src/main/java/dev/compactmods/machines/machine/item/UnboundCompactMachineItem.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,9 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List<Compon
5454
super.appendHoverText(stack, context, tooltip, flags);
5555

5656
tooltip.add(Component.translatableWithFallback(MachineTranslations.IDs.NEW_MACHINE, "New Machine"));
57+
58+
if(stack.has(Machines.DataComponents.ROOM_TEMPLATE_ID)) {
59+
tooltip.add(Component.literal(stack.get(Machines.DataComponents.ROOM_TEMPLATE_ID).toString()));
60+
}
5761
}
5862
}

0 commit comments

Comments
 (0)