Skip to content

Commit d0c1267

Browse files
committed
First port work, so long
1 parent 251b33a commit d0c1267

File tree

13 files changed

+320
-308
lines changed

13 files changed

+320
-308
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.cak.pattern_schematics.foundation;
22

3-
import com.simibubi.create.foundation.networking.SimplePacketBase;
3+
import net.createmod.catnip.net.base.BasePacketPayload;
44

55
public interface GenericNetworker {
66

77
void initServerListener();
88
void initClientListener();
9-
void sendToServer(SimplePacketBase packet);
9+
void sendToServer(BasePacketPayload packet);
1010

1111
}

common/src/main/java/com/cak/pattern_schematics/foundation/mirror/PatternSchematicHandler.java

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.cak.pattern_schematics.foundation.mirror;
22

33
import com.cak.pattern_schematics.foundation.util.Vec3iUtils;
4+
import com.cak.pattern_schematics.registry.PatternSchematicsDataComponents;
45
import com.cak.pattern_schematics.registry.PatternSchematicsRegistry;
56
import com.cak.pattern_schematics.registry.PlatformPackets;
67
import com.google.common.collect.ImmutableList;
78
import com.mojang.blaze3d.vertex.PoseStack;
89
import com.simibubi.create.AllBlocks;
10+
import com.simibubi.create.AllDataComponents;
911
import com.simibubi.create.AllKeys;
1012
import com.simibubi.create.Create;
1113
import com.simibubi.create.content.contraptions.StructureTransform;
@@ -18,17 +20,13 @@
1820
import com.simibubi.create.foundation.utility.CreateLang;
1921
import net.createmod.catnip.animation.AnimationTickHolder;
2022
import net.createmod.catnip.levelWrappers.SchematicLevel;
21-
import net.createmod.catnip.nbt.NBTHelper;
2223
import net.createmod.catnip.outliner.AABBOutline;
2324
import net.createmod.catnip.render.SuperRenderTypeBuffer;
2425
import net.minecraft.client.Minecraft;
2526
import net.minecraft.client.player.LocalPlayer;
2627
import net.minecraft.core.BlockPos;
2728
import net.minecraft.core.Direction;
2829
import net.minecraft.core.Vec3i;
29-
import net.minecraft.nbt.CompoundTag;
30-
import net.minecraft.nbt.NbtUtils;
31-
import net.minecraft.nbt.Tag;
3230
import net.minecraft.world.entity.player.Inventory;
3331
import net.minecraft.world.entity.player.Player;
3432
import net.minecraft.world.item.ItemStack;
@@ -117,11 +115,12 @@ public void tick() {
117115
}
118116
return;
119117
}
120-
121-
if (!active || !stack.getTag()
122-
.getString("File")
123-
.equals(displayedSchematic))
124-
init(player, stack);
118+
119+
if (!this.active || !stack.get(AllDataComponents.SCHEMATIC_FILE).equals(this.displayedSchematic)) {
120+
this.renderers.forEach((r) -> r.setActive(false));
121+
this.init(player, stack);
122+
}
123+
125124
if (!active)
126125
return;
127126

@@ -137,8 +136,7 @@ public void tick() {
137136

138137
private void init(LocalPlayer player, ItemStack stack) {
139138
loadSettings(stack);
140-
displayedSchematic = stack.getTag()
141-
.getString("File");
139+
displayedSchematic = stack.get(AllDataComponents.SCHEMATIC_FILE);
142140
active = true;
143141
if (deployed) {
144142
setupRenderer();
@@ -349,7 +347,7 @@ private ItemStack findBlueprintInHand(Player player) {
349347
ItemStack stack = player.getMainHandItem();
350348
if (!PatternSchematicsRegistry.PATTERN_SCHEMATIC.isIn(stack))
351349
return null;
352-
if (!stack.hasTag())
350+
if (!stack.has(AllDataComponents.SCHEMATIC_FILE))
353351
return null;
354352

355353
activeSchematicItem = stack;
@@ -369,7 +367,7 @@ private boolean itemLost(Player player) {
369367
public void markDirty() {
370368
syncCooldown = SYNC_DELAY;
371369
}
372-
370+
373371
public void sync() {
374372
if (activeSchematicItem == null)
375373
return;
@@ -384,22 +382,20 @@ public void equip(PatternSchematicsToolType tool) {
384382
}
385383

386384
public void loadSettings(ItemStack blueprint) {
387-
CompoundTag tag = blueprint.getTag();
388-
assert tag != null;
389-
390385
BlockPos anchor = BlockPos.ZERO;
391386
StructurePlaceSettings settings = SchematicItem.getSettings(blueprint);
392-
393-
cloneScaleMin = Vec3iUtils.getVec3i("CloneScaleMin", tag);
394-
cloneScaleMax = Vec3iUtils.getVec3i("CloneScaleMax", tag);
395-
cloneOffset = Vec3iUtils.getVec3i("CloneOffset", tag);
396-
397-
transformation = new SchematicTransformation();
398-
deployed = tag.getBoolean("Deployed");
399-
if (deployed)
400-
anchor = NbtUtils.readBlockPos(tag.getCompound("Anchor"));
401-
Vec3i size = NBTHelper.readVec3i(tag.getList("Bounds", Tag.TAG_INT));
402-
387+
388+
cloneScaleMin = blueprint.getOrDefault(PatternSchematicsDataComponents.SCHEMATIC_CLONE_SCALE_MIN, Vec3i.ZERO);
389+
cloneScaleMax = blueprint.getOrDefault(PatternSchematicsDataComponents.SCHEMATIC_CLONE_SCALE_MAX, Vec3i.ZERO);
390+
cloneOffset = blueprint.getOrDefault(PatternSchematicsDataComponents.SCHEMATIC_CLONE_OFFSET, Vec3i.ZERO);
391+
392+
this.transformation = new SchematicTransformation();
393+
this.deployed = blueprint.getOrDefault(AllDataComponents.SCHEMATIC_DEPLOYED, false);
394+
if (this.deployed) {
395+
anchor = blueprint.get(AllDataComponents.SCHEMATIC_ANCHOR);
396+
}
397+
Vec3i size = blueprint.get(AllDataComponents.SCHEMATIC_BOUNDS);
398+
403399
bounds = new AABB(0, 0, 0, size.getX(), size.getY(), size.getZ());
404400
outline = new AABBOutline(bounds);
405401
outline.getParams()

common/src/main/java/com/cak/pattern_schematics/foundation/mirror/PatternSchematicLevel.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.cak.pattern_schematics.foundation.mirror;
22

33
import com.cak.pattern_schematics.foundation.util.Vec3iUtils;
4+
import com.cak.pattern_schematics.registry.PatternSchematicsDataComponents;
45
import com.simibubi.create.content.schematics.SchematicItem;
56
import net.createmod.catnip.levelWrappers.SchematicChunkSource;
67
import net.createmod.catnip.levelWrappers.SchematicLevel;
@@ -63,11 +64,9 @@ public PatternSchematicLevel(BlockPos anchor, Level original) {
6364
}
6465

6566
public void putExtraData(ItemStack blueprint, StructureTemplate template) {
66-
CompoundTag tag = blueprint.getTag();
67-
assert tag != null;
68-
cloneScaleMin = Vec3iUtils.getVec3i("CloneScaleMin", tag);
69-
cloneScaleMax = Vec3iUtils.getVec3i("CloneScaleMax", tag);
70-
cloneOffset = Vec3iUtils.getVec3i("CloneOffset", tag);
67+
cloneScaleMin = blueprint.getOrDefault(PatternSchematicsDataComponents.SCHEMATIC_CLONE_SCALE_MIN, Vec3i.ZERO);
68+
cloneScaleMax = blueprint.getOrDefault(PatternSchematicsDataComponents.SCHEMATIC_CLONE_SCALE_MAX, Vec3i.ZERO);
69+
cloneOffset = blueprint.getOrDefault(PatternSchematicsDataComponents.SCHEMATIC_CLONE_OFFSET, Vec3i.ZERO);
7170

7271
sourceBounds = template.getBoundingBox(SchematicItem.getSettings(blueprint), anchor);
7372
}

common/src/main/java/com/cak/pattern_schematics/foundation/mirror/StaticRenderers.java

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -163,37 +163,33 @@ public static void bufferQuad(PoseStack.Pose pose, VertexConsumer consumer, Vect
163163
float ny = normalTransformTemp.y();
164164
float nz = normalTransformTemp.z();
165165

166-
consumer.vertex(x0, y0, z0)
167-
.color(r, g, b, a)
168-
.uv(minU, minV)
169-
.overlayCoords(OverlayTexture.NO_OVERLAY)
170-
.uv2(lightmap)
171-
.normal(nx, ny, nz)
172-
.endVertex();
166+
consumer.addVertex((float) x0, (float) y0, (float) z0)
167+
.setColor(r, g, b, a)
168+
.setUv(minU, minV)
169+
.setOverlay(OverlayTexture.NO_OVERLAY)
170+
.setLight(lightmap)
171+
.setNormal(nx, ny, nz);
173172

174-
consumer.vertex(x1, y1, z1)
175-
.color(r, g, b, a)
176-
.uv(minU, maxV)
177-
.overlayCoords(OverlayTexture.NO_OVERLAY)
178-
.uv2(lightmap)
179-
.normal(nx, ny, nz)
180-
.endVertex();
173+
consumer.addVertex((float) x1, (float) y1, (float) z1)
174+
.setColor(r, g, b, a)
175+
.setUv(minU, maxV)
176+
.setOverlay(OverlayTexture.NO_OVERLAY)
177+
.setLight(lightmap)
178+
.setNormal(nx, ny, nz);
181179

182-
consumer.vertex(x2, y2, z2)
183-
.color(r, g, b, a)
184-
.uv(maxU, maxV)
185-
.overlayCoords(OverlayTexture.NO_OVERLAY)
186-
.uv2(lightmap)
187-
.normal(nx, ny, nz)
188-
.endVertex();
180+
consumer.addVertex((float) x2, (float) y2, (float) z2)
181+
.setColor(r, g, b, a)
182+
.setUv(maxU, maxV)
183+
.setOverlay(OverlayTexture.NO_OVERLAY)
184+
.setLight(lightmap)
185+
.setNormal(nx, ny, nz);
189186

190-
consumer.vertex(x3, y3, z3)
191-
.color(r, g, b, a)
192-
.uv(maxU, minV)
193-
.overlayCoords(OverlayTexture.NO_OVERLAY)
194-
.uv2(lightmap)
195-
.normal(nx, ny, nz)
196-
.endVertex();
187+
consumer.addVertex((float) x3, (float) y3, (float) z3)
188+
.setColor(r, g, b, a)
189+
.setUv(maxU, minV)
190+
.setOverlay(OverlayTexture.NO_OVERLAY)
191+
.setLight(lightmap)
192+
.setNormal(nx, ny, nz);
197193
}
198194

199195
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.cak.pattern_schematics.registry;
2+
3+
import com.cak.pattern_schematics.PatternSchematics;
4+
import net.createmod.catnip.codecs.stream.CatnipStreamCodecs;
5+
import net.minecraft.core.Vec3i;
6+
import net.minecraft.core.component.DataComponentType;
7+
import net.minecraft.core.registries.Registries;
8+
import net.neoforged.bus.api.IEventBus;
9+
import net.neoforged.neoforge.registries.DeferredRegister;
10+
import org.jetbrains.annotations.ApiStatus;
11+
12+
import java.util.function.UnaryOperator;
13+
14+
public class PatternSchematicsDataComponents {
15+
16+
private static final DeferredRegister.DataComponents DATA_COMPONENTS = DeferredRegister.createDataComponents(Registries.DATA_COMPONENT_TYPE, PatternSchematics.MOD_ID);
17+
18+
public static final DataComponentType<Vec3i> SCHEMATIC_CLONE_SCALE_MIN = register(
19+
"schematic_clone_scale_min",
20+
builder -> builder.persistent(Vec3i.CODEC).networkSynchronized(CatnipStreamCodecs.VEC3I)
21+
);
22+
public static final DataComponentType<Vec3i> SCHEMATIC_CLONE_SCALE_MAX = register(
23+
"schematic_clone_scale_max",
24+
builder -> builder.persistent(Vec3i.CODEC).networkSynchronized(CatnipStreamCodecs.VEC3I)
25+
);
26+
public static final DataComponentType<Vec3i> SCHEMATIC_CLONE_OFFSET = register(
27+
"schematic_clone_offset",
28+
builder -> builder.persistent(Vec3i.CODEC).networkSynchronized(CatnipStreamCodecs.VEC3I)
29+
);
30+
31+
private static <T> DataComponentType<T> register(String name, UnaryOperator<DataComponentType.Builder<T>> builder) {
32+
DataComponentType<T> type = builder.apply(DataComponentType.builder()).build();
33+
DATA_COMPONENTS.register(name, () -> type);
34+
return type;
35+
}
36+
37+
@ApiStatus.Internal
38+
public static void register(IEventBus modEventBus) {
39+
DATA_COMPONENTS.register(modEventBus);
40+
}
41+
42+
}
Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package com.cak.pattern_schematics.forge;
22

33
import com.cak.pattern_schematics.PatternSchematics;
4-
import com.cak.pattern_schematics.registry.PatternSchematicsRegistry;
5-
import net.minecraftforge.api.distmarker.Dist;
6-
import net.minecraftforge.eventbus.api.IEventBus;
7-
import net.minecraftforge.fml.DistExecutor;
8-
import net.minecraftforge.fml.common.Mod;
9-
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
4+
import com.cak.pattern_schematics.registry.PatternSchematicsDataComponents;
5+
import net.neoforged.bus.api.IEventBus;
6+
import net.neoforged.fml.ModLoadingContext;
7+
import net.neoforged.fml.common.Mod;
108

119
import static com.cak.pattern_schematics.PatternSchematics.REGISTRATE;
1210

@@ -15,12 +13,10 @@ public class PatternSchematicsForge {
1513

1614
public PatternSchematicsForge() {
1715
// registrate must be given the mod event bus on forge before registration
18-
IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus();
16+
IEventBus eventBus = ModLoadingContext.get().getActiveContainer().getEventBus();
1917
REGISTRATE.registerEventListeners(eventBus);
18+
PatternSchematicsDataComponents.register(eventBus);
2019
PatternSchematics.init();
21-
22-
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> PatternSchematicsForgeClient::onInitializeClient);
23-
2420
}
2521

2622
}

forge/src/main/java/com/cak/pattern_schematics/forge/PatternSchematicsForgeClient.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,20 @@
33
import com.cak.pattern_schematics.PatternSchematicsClient;
44
import com.cak.pattern_schematics.content.ponder.PatternSchematicsPonderPlugin;
55
import com.cak.pattern_schematics.foundation.mirror.forge.PatternSchematicHandlerForge;
6+
import com.simibubi.create.Create;
67
import net.createmod.ponder.foundation.PonderIndex;
8+
import net.neoforged.api.distmarker.Dist;
9+
import net.neoforged.fml.common.Mod;
710

11+
@Mod(value = Create.ID, dist = Dist.CLIENT)
812
public class PatternSchematicsForgeClient {
913

1014
public static final PatternSchematicHandlerForge PATTERN_SCHEMATICS_HANDLER_FORGE = new PatternSchematicHandlerForge();
11-
15+
16+
public PatternSchematicsForgeClient() {
17+
onInitializeClient();
18+
}
19+
1220
public static void onInitializeClient() {
1321
PatternSchematicsClient.PATTERN_SCHEMATIC_HANDLER = PATTERN_SCHEMATICS_HANDLER_FORGE;
1422
PatternSchematicsClient.init();

forge/src/main/java/com/cak/pattern_schematics/forge/PatternSchematicsForgeClientEvents.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
package com.cak.pattern_schematics.forge;
22

3+
import com.cak.pattern_schematics.PatternSchematics;
34
import com.cak.pattern_schematics.PatternSchematicsClient;
45
import com.cak.pattern_schematics.PatternSchematicsClientEvents;
5-
import net.minecraftforge.api.distmarker.Dist;
6-
import net.minecraftforge.client.event.InputEvent;
7-
import net.minecraftforge.client.event.RegisterGuiOverlaysEvent;
8-
import net.minecraftforge.client.event.RenderLevelStageEvent;
9-
import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay;
10-
import net.minecraftforge.event.TickEvent;
11-
import net.minecraftforge.eventbus.api.SubscribeEvent;
12-
import net.minecraftforge.fml.common.Mod;
13-
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
6+
import net.neoforged.api.distmarker.Dist;
7+
import net.neoforged.bus.api.SubscribeEvent;
8+
import net.neoforged.fml.common.EventBusSubscriber;
9+
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
10+
import net.neoforged.neoforge.client.event.ClientTickEvent;
11+
import net.neoforged.neoforge.client.event.InputEvent;
12+
import net.neoforged.neoforge.client.event.RegisterGuiLayersEvent;
13+
import net.neoforged.neoforge.client.event.RenderLevelStageEvent;
14+
import net.neoforged.neoforge.client.gui.VanillaGuiLayers;
1415

15-
@Mod.EventBusSubscriber(Dist.CLIENT)
16+
@EventBusSubscriber(Dist.CLIENT)
1617
public class PatternSchematicsForgeClientEvents {
1718

1819
@SubscribeEvent
19-
public static void onTick(TickEvent.ClientTickEvent event) {
20+
public static void onTick(ClientTickEvent event) {
2021
PatternSchematicsClientEvents.onTick();
2122
}
2223

@@ -35,7 +36,7 @@ public static void onKeyInput(InputEvent.Key event) {
3536

3637
@SubscribeEvent
3738
public static void onMouseScrolled(InputEvent.MouseScrollingEvent event) {
38-
if (PatternSchematicsClientEvents.onMouseScrolled(event.getScrollDelta()))
39+
if (PatternSchematicsClientEvents.onMouseScrolled(event.getScrollDeltaY()))
3940
event.setCanceled(true);
4041
}
4142

@@ -47,12 +48,12 @@ public static void onMouseInput(InputEvent.MouseButton.Pre event) {
4748
event.setCanceled(true);
4849
}
4950

50-
@Mod.EventBusSubscriber(value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
51+
@EventBusSubscriber(value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD)
5152
public static class ModBusEvents {
5253

5354
@SubscribeEvent
54-
public static void registerGuiOverlays(RegisterGuiOverlaysEvent event) {
55-
event.registerAbove(VanillaGuiOverlay.HOTBAR.id(), "pattern_schematic", PatternSchematicsClient.PATTERN_SCHEMATIC_HANDLER);
55+
public static void registerGuiOverlays(RegisterGuiLayersEvent event) {
56+
event.registerAbove(VanillaGuiLayers.HOTBAR, PatternSchematics.asResource("pattern_schematic"), PatternSchematicsClient.PATTERN_SCHEMATIC_HANDLER);
5657
}
5758

5859
@SubscribeEvent

forge/src/main/java/com/cak/pattern_schematics/foundation/forge/ForgeNetworker.java

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

0 commit comments

Comments
 (0)