15
15
import meteordevelopment .orbit .EventHandler ;
16
16
import nekiplay .Main ;
17
17
import nekiplay .meteorplus .MeteorPlusAddon ;
18
- import net .minecraft .block .Block ;
19
- import net .minecraft .block .BlockState ;
20
- import net .minecraft .block .Blocks ;
18
+ import net .minecraft .block .*;
21
19
import net .minecraft .item .Item ;
22
20
import net .minecraft .util .math .BlockPos ;
23
21
import net .minecraft .world .Heightmap ;
22
+ import net .minecraft .world .chunk .Chunk ;
24
23
import net .minecraft .world .chunk .WorldChunk ;
25
24
26
25
import java .io .*;
@@ -45,6 +44,10 @@ public void onActivate() {
45
44
46
45
createDefault ();
47
46
load ();
47
+
48
+ for (Chunk chunk : Utils .chunks ()) {
49
+ updateChunkData (chunk );
50
+ }
48
51
}
49
52
50
53
public final Setting <Boolean > noSetIfAir = settingsGroup .add (new BoolSetting .Builder ()
@@ -54,9 +57,7 @@ public void onActivate() {
54
57
.build ()
55
58
);
56
59
57
- @ EventHandler
58
- private void onChunkData (ChunkDataEvent event ) {
59
- WorldChunk chunk = event .chunk ();
60
+ private void updateChunkData (Chunk chunk ) {
60
61
String dimension = PlayerUtils .getDimension ().name ();
61
62
for (int x = chunk .getPos ().getStartX (); x <= chunk .getPos ().getEndX (); x ++) {
62
63
for (int z = chunk .getPos ().getStartZ (); z <= chunk .getPos ().getEndZ (); z ++) {
@@ -72,17 +73,20 @@ private void onChunkData(ChunkDataEvent event) {
72
73
CustomBlockData customBlockData = allBlocks .get (new PosData (pos ));
73
74
if (customBlockData != null ) {
74
75
if (customBlockData .dimension .equals (dimension )) {
75
- Item item = Item .byRawId (customBlockData .block_id );
76
- Block block = Block .getBlockFromItem (item );
77
76
if (isValidBlockForReplace (original )) {
78
- mc . world . setBlockState (pos , block . getDefaultState () );
77
+ setBlock (pos , customBlockData );
79
78
}
80
79
}
81
80
}
82
81
}
83
82
}
84
83
}
84
+ }
85
85
86
+ @ EventHandler
87
+ private void onChunkData (ChunkDataEvent event ) {
88
+ WorldChunk chunk = event .chunk ();
89
+ updateChunkData (chunk );
86
90
}
87
91
88
92
private boolean isValidBlockForReplace (Block block ) {
@@ -95,17 +99,23 @@ private boolean isValidBlockForReplace(Block block) {
95
99
return false ;
96
100
}
97
101
102
+ private void setBlock (BlockPos pos , CustomBlockData data ) {
103
+ Item item = Item .byRawId (data .block_id );
104
+ Block block = Block .getBlockFromItem (item );
105
+ BlockState state = block .getDefaultState ();
106
+
107
+ mc .world .setBlockState (pos , state );
108
+ }
109
+
98
110
@ EventHandler
99
111
private void onBlockUpdate (BlockUpdateEvent event ) {
100
112
String dimension = PlayerUtils .getDimension ().name ();
101
113
CustomBlockData customBlockData = allBlocks .get (new PosData (event .pos ));
102
114
if (customBlockData != null ) {
103
115
if (customBlockData .dimension .equals (dimension )) {
104
- Item item = Item .byRawId (customBlockData .block_id );
105
116
Block original = event .newState .getBlock ();
106
- Block block = Block .getBlockFromItem (item );
107
117
if (isValidBlockForReplace (original )) {
108
- mc . world . setBlockState (event .pos , block . getDefaultState () );
118
+ setBlock (event .pos , customBlockData );
109
119
}
110
120
}
111
121
}
0 commit comments