88import net .blay09 .mods .waystones .api .trait .IAttunementItem ;
99import net .blay09 .mods .waystones .block .ModBlocks ;
1010import net .blay09 .mods .waystones .block .WaystoneBlock ;
11+ import net .blay09 .mods .waystones .block .WaystoneBlockBase ;
12+ import net .blay09 .mods .waystones .block .entity .WaystoneBlockEntityBase ;
1113import net .blay09 .mods .waystones .config .WaystonesConfig ;
1214import net .blay09 .mods .waystones .core .*;
1315import net .blay09 .mods .waystones .requirement .RequirementModifierParser ;
@@ -131,8 +133,19 @@ public ItemStack createBoundScroll(Waystone waystone) {
131133 @ Override
132134 public Optional <Waystone > placeWaystone (ServerLevel level , BlockPos pos , WaystoneStyle style ) {
133135 Block block = BuiltInRegistries .BLOCK .getValue (style .getBlockRegistryName ());
134- level .setBlock (pos , block .defaultBlockState ().setValue (WaystoneBlock .HALF , DoubleBlockHalf .LOWER ), 3 );
135- level .setBlock (pos .above (), block .defaultBlockState ().setValue (WaystoneBlock .HALF , DoubleBlockHalf .UPPER ), 3 );
136+ level .setBlock (pos , block .defaultBlockState ()
137+ .setValue (WaystoneBlock .HALF , DoubleBlockHalf .LOWER )
138+ .setValue (WaystoneBlockBase .ORIGIN , WaystoneOrigin .PLAYER ), 3 );
139+ level .setBlock (pos .above (), block .defaultBlockState ()
140+ .setValue (WaystoneBlock .HALF , DoubleBlockHalf .UPPER )
141+ .setValue (WaystoneBlockBase .ORIGIN , WaystoneOrigin .PLAYER ), 3 );
142+ if (level .getBlockEntity (pos ) instanceof WaystoneBlockEntityBase waystoneBlockEntity ) {
143+ waystoneBlockEntity .initializeWaystone (level , null , WaystoneOrigin .PLAYER );
144+ if (level .getBlockEntity (pos .above ()) instanceof WaystoneBlockEntityBase waystoneBlockEntityAbove ) {
145+ waystoneBlockEntityAbove .initializeFromBase (waystoneBlockEntity );
146+ }
147+ return Optional .of (waystoneBlockEntity .getWaystone ());
148+ }
136149 return getWaystoneAt (level , pos );
137150 }
138151
@@ -143,14 +156,30 @@ public Optional<Waystone> placeSharestone(ServerLevel level, BlockPos pos, DyeCo
143156 return Optional .empty ();
144157 }
145158
146- level .setBlock (pos , sharestone .defaultBlockState ().setValue (WaystoneBlock .HALF , DoubleBlockHalf .LOWER ), 3 );
147- level .setBlock (pos .above (), sharestone .defaultBlockState ().setValue (WaystoneBlock .HALF , DoubleBlockHalf .UPPER ), 3 );
159+ level .setBlock (pos , sharestone .defaultBlockState ()
160+ .setValue (WaystoneBlock .HALF , DoubleBlockHalf .LOWER )
161+ .setValue (WaystoneBlockBase .ORIGIN , WaystoneOrigin .PLAYER ), 3 );
162+ level .setBlock (pos .above (), sharestone .defaultBlockState ()
163+ .setValue (WaystoneBlock .HALF , DoubleBlockHalf .UPPER )
164+ .setValue (WaystoneBlockBase .ORIGIN , WaystoneOrigin .PLAYER ), 3 );
165+ if (level .getBlockEntity (pos ) instanceof WaystoneBlockEntityBase waystoneBlockEntity ) {
166+ waystoneBlockEntity .initializeWaystone (level , null , WaystoneOrigin .PLAYER );
167+ if (level .getBlockEntity (pos .above ()) instanceof WaystoneBlockEntityBase waystoneBlockEntityAbove ) {
168+ waystoneBlockEntityAbove .initializeFromBase (waystoneBlockEntity );
169+ }
170+ return Optional .of (waystoneBlockEntity .getWaystone ());
171+ }
148172 return getWaystoneAt (level , pos );
149173 }
150174
151175 @ Override
152176 public Optional <Waystone > placeWarpPlate (ServerLevel level , BlockPos pos ) {
153- level .setBlock (pos , ModBlocks .warpPlate .defaultBlockState (), 3 );
177+ level .setBlock (pos , ModBlocks .warpPlate .defaultBlockState ()
178+ .setValue (WaystoneBlockBase .ORIGIN , WaystoneOrigin .PLAYER ), 3 );
179+ if (level .getBlockEntity (pos ) instanceof WaystoneBlockEntityBase waystoneBlockEntity ) {
180+ waystoneBlockEntity .initializeWaystone (level , null , WaystoneOrigin .PLAYER );
181+ return Optional .of (waystoneBlockEntity .getWaystone ());
182+ }
154183 return getWaystoneAt (level , pos );
155184 }
156185
0 commit comments