Skip to content

Commit

Permalink
FOR REALSIES THIS TIME
Browse files Browse the repository at this point in the history
  • Loading branch information
robotgryphon committed Aug 4, 2024
1 parent b0fc5ec commit d1c7147
Show file tree
Hide file tree
Showing 9 changed files with 169 additions and 171 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=true
org.gradle.parallel=true
# org.gradle.caching=true
org.gradle.configuration-cache=true
# org.gradle.configuration-cache=true

neoForge.parchment.minecraftVersion=1.20.6
neoForge.parchment.mappingsVersion=2024.05.01
Expand Down
Original file line number Diff line number Diff line change
@@ -1,51 +1,57 @@
package dev.compactmods.machines.datagen.loot;

import dev.compactmods.machines.data.functions.CopyRoomBindingFunction;
import dev.compactmods.machines.machine.Machines;
import dev.compactmods.machines.room.Rooms;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.loot.BlockLootSubProvider;
import net.minecraft.world.flag.FeatureFlags;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.storage.loot.LootPool;
import net.minecraft.world.level.storage.loot.LootTable;
import net.minecraft.world.level.storage.loot.entries.LootItem;
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition;
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;

import java.util.Collections;
import java.util.Set;

public class BlockLootGenerator extends BlockLootSubProvider {

public BlockLootGenerator(HolderLookup.Provider holderLookup) {
super(Collections.emptySet(), FeatureFlags.REGISTRY.allFlags(), holderLookup);
}

@Override
protected Iterable<Block> getKnownBlocks() {
return Set.of(Rooms.Blocks.BREAKABLE_WALL.get(), Machines.Blocks.BOUND_MACHINE.get());
}

@Override
protected void generate() {
this.add(Rooms.Blocks.BREAKABLE_WALL.get(), LootTable.lootTable().withPool(LootPool
.lootPool()
.name(Rooms.Blocks.BREAKABLE_WALL.getId().toString())
.setRolls(ConstantValue.exactly(1))
.when(ExplosionCondition.survivesExplosion())
.add(LootItem.lootTableItem(Rooms.Items.BREAKABLE_WALL.get()))));

var drop = LootItem.lootTableItem(Machines.Items.BOUND_MACHINE.get());

final var lootPoolCM = LootPool.lootPool()
.setRolls(ConstantValue.exactly(1))
.when(ExplosionCondition.survivesExplosion())
.apply(CopyRoomBindingFunction::new)
.add(drop);

final var cmLootTable = LootTable.lootTable().withPool(lootPoolCM);

this.add(Machines.Blocks.BOUND_MACHINE.get(), cmLootTable);
}
}
package dev.compactmods.machines.datagen.loot;

import dev.compactmods.machines.machine.Machines;
import dev.compactmods.machines.room.Rooms;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.loot.BlockLootSubProvider;
import net.minecraft.world.flag.FeatureFlags;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.storage.loot.LootPool;
import net.minecraft.world.level.storage.loot.LootTable;
import net.minecraft.world.level.storage.loot.entries.LootItem;
import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction;
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition;
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;

import java.util.Collections;
import java.util.Set;

public class BlockLootGenerator extends BlockLootSubProvider {

public BlockLootGenerator(HolderLookup.Provider holderLookup) {
super(Collections.emptySet(), FeatureFlags.REGISTRY.allFlags(), holderLookup);
}

@Override
protected Iterable<Block> getKnownBlocks() {
return Set.of(Rooms.Blocks.BREAKABLE_WALL.get(),
Machines.Blocks.BOUND_MACHINE.get(),
Machines.Blocks.UNBOUND_MACHINE.get());
}

@Override
protected void generate() {
this.add(Rooms.Blocks.BREAKABLE_WALL.get(), LootTable.lootTable().withPool(LootPool
.lootPool()
.name(Rooms.Blocks.BREAKABLE_WALL.getId().toString())
.setRolls(ConstantValue.exactly(1))
.when(ExplosionCondition.survivesExplosion())
.add(LootItem.lootTableItem(Rooms.Items.BREAKABLE_WALL.get()))));

this.add(Machines.Blocks.UNBOUND_MACHINE.get(), LootTable.lootTable().withPool(LootPool.lootPool()
.setRolls(ConstantValue.exactly(1))
.when(ExplosionCondition.survivesExplosion())
.apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY)
.include(Machines.DataComponents.MACHINE_COLOR.get())
.include(Machines.DataComponents.ROOM_TEMPLATE_ID.get()))
.add(LootItem.lootTableItem(Machines.Items.UNBOUND_MACHINE.get()))));

this.add(Machines.Blocks.BOUND_MACHINE.get(), LootTable.lootTable().withPool(LootPool.lootPool()
.setRolls(ConstantValue.exactly(1))
.when(ExplosionCondition.survivesExplosion())
.apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY)
.include(Machines.DataComponents.MACHINE_COLOR.get())
.include(Machines.DataComponents.BOUND_ROOM_CODE.get()))
.add(LootItem.lootTableItem(Machines.Items.BOUND_MACHINE.get()))));
}
}
Original file line number Diff line number Diff line change
@@ -1,66 +1,64 @@
package dev.compactmods.machines;

import dev.compactmods.machines.api.CompactMachines;
import dev.compactmods.machines.command.Commands;
import dev.compactmods.machines.compat.InterModCompat;
import dev.compactmods.machines.config.CommonConfig;
import dev.compactmods.machines.config.ServerConfig;
import dev.compactmods.machines.data.functions.LootFunctions;
import dev.compactmods.machines.dimension.Dimension;
import dev.compactmods.machines.dimension.WorldBorderFixer;
import dev.compactmods.machines.machine.Machines;
import dev.compactmods.machines.network.CMNetworks;
import dev.compactmods.machines.room.Rooms;
import dev.compactmods.machines.room.block.ProtectedBlockEventHandler;
import dev.compactmods.machines.room.upgrade.RoomUpgrades;
import dev.compactmods.machines.shrinking.Shrinking;
import dev.compactmods.machines.villager.Villagers;
import net.minecraft.util.FastColor;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModContainer;
import net.neoforged.fml.common.Mod;
import net.neoforged.fml.config.ModConfig;
import net.neoforged.neoforge.common.NeoForge;

@Mod(CompactMachines.MOD_ID)
public class CompactMachinesCommon {

public static final int BRAND_MACHINE_COLOR = FastColor.ARGB32.color(255, 248, 246, 76);

@SuppressWarnings("unused")
public CompactMachinesCommon(IEventBus modBus, ModContainer modContainer) {
initConfigs(modContainer);
prepare();
registerEvents(modBus);

CMRegistries.setup(modBus);
}

private static void initConfigs(ModContainer modContainer) {
modContainer.registerConfig(ModConfig.Type.COMMON, CommonConfig.CONFIG);
modContainer.registerConfig(ModConfig.Type.SERVER, ServerConfig.CONFIG);
}

private static void prepare() {
Machines.prepare();
Shrinking.prepare();
Rooms.prepare();
RoomUpgrades.prepare();
Dimension.prepare();
Commands.prepare();
LootFunctions.prepare();
Villagers.prepare();
}

private static void registerEvents(IEventBus modBus) {
Rooms.registerEvents(modBus);
RoomUpgrades.registerEvents(modBus);
WorldBorderFixer.registerEvents();

modBus.addListener(CMNetworks::onPacketRegistration);
modBus.addListener(InterModCompat::enqueueCompatMessages);

NeoForge.EVENT_BUS.addListener(Commands::onCommandsRegister);
NeoForge.EVENT_BUS.addListener(ProtectedBlockEventHandler::leftClickBlock);
}
}
package dev.compactmods.machines;

import dev.compactmods.machines.api.CompactMachines;
import dev.compactmods.machines.command.Commands;
import dev.compactmods.machines.compat.InterModCompat;
import dev.compactmods.machines.config.CommonConfig;
import dev.compactmods.machines.config.ServerConfig;
import dev.compactmods.machines.dimension.Dimension;
import dev.compactmods.machines.dimension.WorldBorderFixer;
import dev.compactmods.machines.machine.Machines;
import dev.compactmods.machines.network.CMNetworks;
import dev.compactmods.machines.room.Rooms;
import dev.compactmods.machines.room.block.ProtectedBlockEventHandler;
import dev.compactmods.machines.room.upgrade.RoomUpgrades;
import dev.compactmods.machines.shrinking.Shrinking;
import dev.compactmods.machines.villager.Villagers;
import net.minecraft.util.FastColor;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModContainer;
import net.neoforged.fml.common.Mod;
import net.neoforged.fml.config.ModConfig;
import net.neoforged.neoforge.common.NeoForge;

@Mod(CompactMachines.MOD_ID)
public class CompactMachinesCommon {

public static final int BRAND_MACHINE_COLOR = FastColor.ARGB32.color(255, 248, 246, 76);

@SuppressWarnings("unused")
public CompactMachinesCommon(IEventBus modBus, ModContainer modContainer) {
initConfigs(modContainer);
prepare();
registerEvents(modBus);

CMRegistries.setup(modBus);
}

private static void initConfigs(ModContainer modContainer) {
modContainer.registerConfig(ModConfig.Type.COMMON, CommonConfig.CONFIG);
modContainer.registerConfig(ModConfig.Type.SERVER, ServerConfig.CONFIG);
}

private static void prepare() {
Machines.prepare();
Shrinking.prepare();
Rooms.prepare();
RoomUpgrades.prepare();
Dimension.prepare();
Commands.prepare();
Villagers.prepare();
}

private static void registerEvents(IEventBus modBus) {
Rooms.registerEvents(modBus);
RoomUpgrades.registerEvents(modBus);
WorldBorderFixer.registerEvents();

modBus.addListener(CMNetworks::onPacketRegistration);
modBus.addListener(InterModCompat::enqueueCompatMessages);

NeoForge.EVENT_BUS.addListener(Commands::onCommandsRegister);
NeoForge.EVENT_BUS.addListener(ProtectedBlockEventHandler::leftClickBlock);
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -111,14 +111,17 @@ static void prepare() {
}

interface DataComponents {
String KEY_ROOM_TEMPLATE = "room_template";
String KEY_ROOM_CODE = "room_code";

DeferredHolder<DataComponentType<?>, DataComponentType<String>> BOUND_ROOM_CODE = CMRegistries.DATA_COMPONENTS
.registerComponentType("room_code", MachineComponents.BOUND_ROOM_CODE);
.registerComponentType(KEY_ROOM_CODE, MachineComponents.BOUND_ROOM_CODE);

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

DeferredHolder<DataComponentType<?>, DataComponentType<ResourceLocation>> ROOM_TEMPLATE_ID = CMRegistries.DATA_COMPONENTS
.registerComponentType("room_template", MachineComponents.ROOM_TEMPLATE_ID);
.registerComponentType(KEY_ROOM_TEMPLATE, MachineComponents.ROOM_TEMPLATE_ID);

static void prepare() {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.minecraft.core.BlockPos;
import net.minecraft.core.GlobalPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.component.DataComponentMap;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel;
Expand All @@ -33,6 +34,24 @@ public BoundCompactMachineBlockEntity(BlockPos pos, BlockState state) {
super(Machines.BlockEntities.MACHINE.get(), pos, state);
}

@Override
protected void applyImplicitComponents(DataComponentInput components) {
super.applyImplicitComponents(components);
this.roomCode = components.get(Machines.DataComponents.BOUND_ROOM_CODE);
}

@Override
protected void collectImplicitComponents(DataComponentMap.Builder builder) {
super.collectImplicitComponents(builder);
builder.set(Machines.DataComponents.BOUND_ROOM_CODE, this.roomCode);
}

@Override
public void removeComponentsFromTag(CompoundTag tag) {
super.removeComponentsFromTag(tag);
tag.remove(Machines.DataComponents.KEY_ROOM_CODE);
}

@Override
protected void loadAdditional(CompoundTag nbt, HolderLookup.Provider holders) {
super.loadAdditional(nbt, holders);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import dev.compactmods.machines.machine.Machines;
import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.component.DataComponentMap;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity;
Expand All @@ -23,6 +24,24 @@ public UnboundCompactMachineEntity(BlockPos pos, BlockState state) {
this.templateId = null;
}

@Override
protected void applyImplicitComponents(DataComponentInput components) {
super.applyImplicitComponents(components);
this.templateId = components.get(Machines.DataComponents.ROOM_TEMPLATE_ID);
}

@Override
protected void collectImplicitComponents(DataComponentMap.Builder builder) {
super.collectImplicitComponents(builder);
builder.set(Machines.DataComponents.ROOM_TEMPLATE_ID, this.templateId);
}

@Override
public void removeComponentsFromTag(CompoundTag tag) {
super.removeComponentsFromTag(tag);
tag.remove(Machines.DataComponents.KEY_ROOM_TEMPLATE);
}

@Override
public void loadAdditional(@NotNull CompoundTag nbt, HolderLookup.Provider holders) {
super.loadAdditional(nbt, holders);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,9 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List<Compon
super.appendHoverText(stack, context, tooltip, flags);

tooltip.add(Component.translatableWithFallback(MachineTranslations.IDs.NEW_MACHINE, "New Machine"));

if(stack.has(Machines.DataComponents.ROOM_TEMPLATE_ID)) {
tooltip.add(Component.literal(stack.get(Machines.DataComponents.ROOM_TEMPLATE_ID).toString()));
}
}
}

0 comments on commit d1c7147

Please sign in to comment.