-
Notifications
You must be signed in to change notification settings - Fork 80
Expand file tree
/
Copy pathRooms.java
More file actions
125 lines (102 loc) · 4.86 KB
/
Rooms.java
File metadata and controls
125 lines (102 loc) · 4.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package dev.compactmods.machines.room;
import com.google.common.base.Predicates;
import com.mojang.serialization.Codec;
import dev.compactmods.machines.LoggingUtil;
import dev.compactmods.machines.api.room.history.RoomEntryPoint;
import dev.compactmods.machines.api.room.upgrade.components.RoomUpgradeList;
import dev.compactmods.machines.CMRegistries;
import dev.compactmods.machines.network.RoomNetworkHandler;
import dev.compactmods.machines.room.block.SolidWallBlock;
import dev.compactmods.machines.room.ui.preview.MachineRoomMenu;
import dev.compactmods.machines.room.ui.upgrades.RoomUpgradeMenu;
import dev.compactmods.machines.room.upgrade.RoomUpgradeInventory;
import dev.compactmods.machines.room.wall.BreakableWallBlock;
import dev.compactmods.machines.room.wall.ItemBlockWall;
import net.minecraft.core.BlockPos;
import net.minecraft.core.GlobalPos;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
import net.neoforged.neoforge.attachment.AttachmentType;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.common.extensions.IMenuTypeExtension;
import net.neoforged.neoforge.registries.DeferredBlock;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredItem;
import java.util.List;
import java.util.function.Supplier;
public interface Rooms {
interface Blocks {
DeferredBlock<SolidWallBlock> SOLID_WALL = CMRegistries.BLOCKS.register("solid_wall", () ->
new SolidWallBlock(BlockBehaviour.Properties.of()
.strength(-1.0F, 3600000.8F)
.sound(SoundType.METAL)
.lightLevel((state) -> state.getValue(SolidWallBlock.LIGHTS_ON) ? 15 : 0)));
DeferredBlock<BreakableWallBlock> BREAKABLE_WALL = CMRegistries.BLOCKS.register("wall", () ->
new BreakableWallBlock(BlockBehaviour.Properties.of()
.strength(3.0f, 128.0f)
.requiresCorrectToolForDrops()));
static void prepare() {
}
}
interface Items {
Supplier<Item.Properties> WALL_ITEM_PROPS = Item.Properties::new;
DeferredItem<ItemBlockWall> ITEM_SOLID_WALL = CMRegistries.ITEMS.register("solid_wall", () ->
new ItemBlockWall(Blocks.SOLID_WALL.get(), WALL_ITEM_PROPS.get()));
DeferredItem<ItemBlockWall> BREAKABLE_WALL = CMRegistries.ITEMS.register("wall", () ->
new ItemBlockWall(Blocks.BREAKABLE_WALL.get(), WALL_ITEM_PROPS.get()));
static void prepare() {
}
}
interface Menus {
DeferredHolder<MenuType<?>, MenuType<MachineRoomMenu>> MACHINE_MENU = CMRegistries.CONTAINERS.register("machine",
() -> IMenuTypeExtension.create(MachineRoomMenu::createClientMenu));
DeferredHolder<MenuType<?>, MenuType<RoomUpgradeMenu>> ROOM_UPGRADES = CMRegistries.CONTAINERS.register("room_upgrades",
() -> IMenuTypeExtension.create(RoomUpgradeMenu::createClientMenu));
static void prepare() {
}
}
interface DataAttachments {
Supplier<AttachmentType<RoomEntryPoint>> LAST_ROOM_ENTRYPOINT = CMRegistries.ATTACHMENT_TYPES.register("last_entrypoint", () -> AttachmentType.builder(() -> RoomEntryPoint.INVALID)
.serialize(RoomEntryPoint.CODEC)
.build());
Supplier<AttachmentType<RoomUpgradeInventory>> UPGRADE_INV = CMRegistries.ATTACHMENT_TYPES.register("upgrades", () -> AttachmentType
.serializable(RoomUpgradeInventory::new)
.build());
Supplier<AttachmentType<GlobalPos>> OPEN_MACHINE_POS = CMRegistries.ATTACHMENT_TYPES.register("open_machine", () -> AttachmentType
.builder(() -> GlobalPos.of(Level.OVERWORLD, BlockPos.ZERO))
.serialize(GlobalPos.CODEC, Predicates.alwaysFalse())
.build());
Supplier<AttachmentType<RoomUpgradeList>> PERMANENT_UPGRADES = CMRegistries.ATTACHMENT_TYPES.register("permanent_upgrades", () -> AttachmentType
.builder(() -> new RoomUpgradeList(List.of()))
.serialize(RoomUpgradeList.CODEC)
.build());
Supplier<AttachmentType<String>> CURRENT_ROOM_CODE = CMRegistries.ATTACHMENT_TYPES.register("current_room_code", () -> AttachmentType
.<String>builder(() -> null)
.serialize(Codec.STRING)
.build()) ;
static void prepare() {
}
}
static void prepare() {
Blocks.prepare();
Items.prepare();
Menus.prepare();
DataAttachments.prepare();
}
static void registerEvents(IEventBus modBus) {
modBus.addListener(FMLCommonSetupEvent.class, commonSetup -> {
var logger = LoggingUtil.modLog();
logger.trace("Initializing network handler.");
RoomNetworkHandler.setupMessages();
});
NeoForge.EVENT_BUS.addListener(RoomEventHandler::checkSpawn);
NeoForge.EVENT_BUS.addListener(RoomEventHandler::entityChangedDimensions);
NeoForge.EVENT_BUS.addListener(RoomEventHandler::entityJoined);
NeoForge.EVENT_BUS.addListener(RoomEventHandler::entityTeleport);
}
}