66import cn .nukkit .math .AxisAlignedBB ;
77import cn .nukkit .math .SimpleAxisAlignedBB ;
88import net .easecation .bridge .core .BlockDef ;
9- import net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .Component ;
10- import net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .Geometry ;
11- import net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .CollisionBox ;
12- import net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .StatesValue ;
9+ import net .easecation .bridge .core .dto .block . v1_21_60 .Component ;
10+ import net .easecation .bridge .core .dto .block . v1_21_60 .Geometry ;
11+ import net .easecation .bridge .core .dto .block . v1_21_60 .CollisionBox ;
12+ import net .easecation .bridge .core .dto .block . v1_21_60 .StatesValue ;
1313
1414import java .util .List ;
1515import java .util .Map ;
@@ -213,10 +213,10 @@ private SimpleAxisAlignedBB extractCollisionBox(Component comp) {
213213 var collisionBox = comp .minecraft_collisionBox ();
214214
215215 // CollisionBox is a sealed interface with variants
216- if (collisionBox instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .CollisionBox .CollisionBox_Variant0 variant0 ) {
216+ if (collisionBox instanceof net .easecation .bridge .core .dto .block . v1_21_60 .CollisionBox .CollisionBox_Variant0 variant0 ) {
217217 // Boolean value: true = default cube, false = no collision
218218 return variant0 .value () ? CUBE : null ;
219- } else if (collisionBox instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .CollisionBox .CollisionBox_Variant1 variant1 ) {
219+ } else if (collisionBox instanceof net .easecation .bridge .core .dto .block . v1_21_60 .CollisionBox .CollisionBox_Variant1 variant1 ) {
220220 // Detailed config with origin and size
221221 // Origin is specified as [x, y, z] in range (-8, 0, -8) to (8, 16, 8)
222222 // Size is specified as [x, y, z]
@@ -264,10 +264,10 @@ private float extractHardness(Component comp) {
264264 if (comp .minecraft_destructibleByMining () != null ) {
265265 var destructible = comp .minecraft_destructibleByMining ();
266266 // DestructibleByMining is a sealed interface with variants
267- if (destructible instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .DestructibleByMining .DestructibleByMining_Variant0 variant0 ) {
267+ if (destructible instanceof net .easecation .bridge .core .dto .block . v1_21_60 .DestructibleByMining .DestructibleByMining_Variant0 variant0 ) {
268268 // Boolean value: true = default hardness, false = unbreakable
269269 return variant0 .value () ? 1.0f : -1.0f ;
270- } else if (destructible instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .DestructibleByMining .DestructibleByMining_Variant1 variant1 ) {
270+ } else if (destructible instanceof net .easecation .bridge .core .dto .block . v1_21_60 .DestructibleByMining .DestructibleByMining_Variant1 variant1 ) {
271271 // Detailed config with seconds_to_destroy
272272 if (variant1 .secondsToDestroy () != null ) {
273273 return variant1 .secondsToDestroy ().floatValue ();
@@ -281,10 +281,10 @@ private float extractResistance(Component comp, float hardness) {
281281 if (comp .minecraft_destructibleByExplosion () != null ) {
282282 var explosion = comp .minecraft_destructibleByExplosion ();
283283 // DestructibleByExplosion is a sealed interface with variants
284- if (explosion instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .DestructibleByExplosion .DestructibleByExplosion_Variant0 variant0 ) {
284+ if (explosion instanceof net .easecation .bridge .core .dto .block . v1_21_60 .DestructibleByExplosion .DestructibleByExplosion_Variant0 variant0 ) {
285285 // Boolean value: true = default resistance, false = immune
286286 return variant0 .value () ? hardness * 5.0f : Float .MAX_VALUE ;
287- } else if (explosion instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .DestructibleByExplosion .DestructibleByExplosion_Variant1 variant1 ) {
287+ } else if (explosion instanceof net .easecation .bridge .core .dto .block . v1_21_60 .DestructibleByExplosion .DestructibleByExplosion_Variant1 variant1 ) {
288288 // Detailed config with explosion_resistance
289289 if (variant1 .explosionResistance () != null ) {
290290 return variant1 .explosionResistance ().floatValue ();
@@ -328,9 +328,9 @@ private SimpleAxisAlignedBB extractSelectionBox(Component comp, SimpleAxisAligne
328328 }
329329
330330 var selectionBox = comp .minecraft_selectionBox ();
331- if (selectionBox instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .SelectionBox .SelectionBox_Variant0 variant0 ) {
331+ if (selectionBox instanceof net .easecation .bridge .core .dto .block . v1_21_60 .SelectionBox .SelectionBox_Variant0 variant0 ) {
332332 return variant0 .value () ? CUBE : null ;
333- } else if (selectionBox instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .SelectionBox .SelectionBox_Variant1 variant1 ) {
333+ } else if (selectionBox instanceof net .easecation .bridge .core .dto .block . v1_21_60 .SelectionBox .SelectionBox_Variant1 variant1 ) {
334334 float [] origin = new float []{-8 , 0 , -8 };
335335 float [] size = new float []{16 , 16 , 16 };
336336
@@ -375,18 +375,20 @@ private boolean extractSolid(Component comp) {
375375 }
376376
377377 private boolean extractReplaceable (Component comp ) {
378- return comp .minecraft_replaceable () != null ;
378+ // Note: minecraft:replaceable component was removed from v1_21_60 schema
379+ // Replaceable blocks should be identified through other means
380+ return false ;
379381 }
380382
381383 private int extractFlameOdds (Component comp ) {
382384 if (comp .minecraft_flammable () != null ) {
383385 var flammable = comp .minecraft_flammable ();
384- if (flammable instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .Flammable .Flammable_Variant1 variant1 ) {
386+ if (flammable instanceof net .easecation .bridge .core .dto .block . v1_21_60 .Flammable .Flammable_Variant1 variant1 ) {
385387 if (variant1 .catchChanceModifier () != null ) {
386388 return variant1 .catchChanceModifier ().intValue ();
387389 }
388390 return 5 ; // Default catch chance
389- } else if (flammable instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .Flammable .Flammable_Variant0 variant0 ) {
391+ } else if (flammable instanceof net .easecation .bridge .core .dto .block . v1_21_60 .Flammable .Flammable_Variant0 variant0 ) {
390392 return variant0 .value () ? 5 : 0 ;
391393 }
392394 }
@@ -396,12 +398,12 @@ private int extractFlameOdds(Component comp) {
396398 private int extractBurnOdds (Component comp ) {
397399 if (comp .minecraft_flammable () != null ) {
398400 var flammable = comp .minecraft_flammable ();
399- if (flammable instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .Flammable .Flammable_Variant1 variant1 ) {
401+ if (flammable instanceof net .easecation .bridge .core .dto .block . v1_21_60 .Flammable .Flammable_Variant1 variant1 ) {
400402 if (variant1 .destroyChanceModifier () != null ) {
401403 return variant1 .destroyChanceModifier ().intValue ();
402404 }
403405 return 20 ; // Default destroy chance
404- } else if (flammable instanceof net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .Flammable .Flammable_Variant0 variant0 ) {
406+ } else if (flammable instanceof net .easecation .bridge .core .dto .block . v1_21_60 .Flammable .Flammable_Variant0 variant0 ) {
405407 return variant0 .value () ? 20 : 0 ;
406408 }
407409 }
@@ -429,7 +431,7 @@ private int extractAllowedPlacementFaces(Component comp) {
429431 return 0b111111; // Default: all faces
430432 }
431433
432- private boolean [] extractTraitStates (net .easecation .bridge .core .dto .v1_21_60 . behavior . blocks .Traits traits ) {
434+ private boolean [] extractTraitStates (net .easecation .bridge .core .dto .block . v1_21_60 .Traits traits ) {
433435 // Returns: [cardinalDirection, facingDirection, blockFace, verticalHalf, cardinalConnections]
434436 boolean [] states = new boolean [5 ];
435437 if (traits == null ) {
0 commit comments