Skip to content

Commit caad4cd

Browse files
committed
Move init and load updates around a bit to subvert unknown Forge async classloading bug and cleanup mitigation code
1 parent 8ab217d commit caad4cd

File tree

7 files changed

+16
-10
lines changed

7 files changed

+16
-10
lines changed

common/src/brentmaas/buildguide/common/AbstractRenderHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public abstract class AbstractRenderHandler {
4141
public void render() {
4242
pushProfiler(BuildGuide.modid);
4343

44-
if(BuildGuide.stateManager.isStatePresent() && BuildGuide.stateManager.getState().enabled && BuildGuide.stateManager.getState().isShapeAvailable() && BuildGuide.stateManager.getState().getCurrentShapeSet().origin != null) { // isStatePresent: quickfix for weird ClassNotFoundException when opening the GUI
44+
if(BuildGuide.stateManager.getState().enabled && BuildGuide.stateManager.getState().isShapeAvailable() && BuildGuide.stateManager.getState().getCurrentShapeSet().origin != null) {
4545
for(ShapeSet s: BuildGuide.stateManager.getState().shapeSets) renderShapeSet(s);
4646
}
4747

common/src/brentmaas/buildguide/common/State.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class State {
2727
private static final String PERSISTENCE_ISHAPENEW = "iShapeNew";
2828

2929
private boolean initialised = false;
30+
private boolean fromPersistence = false;
3031
public ArrayList<ShapeSet> shapeSets = new ArrayList<ShapeSet>();
3132
protected int iShapeSet = 0;
3233
public int iShapeNew = ShapeRegistry.getShapeId(ShapeCircle.class);
@@ -82,20 +83,27 @@ public void pushNewShapeSet() {
8283
newShapeSet.colourOriginG = random.nextFloat();
8384
newShapeSet.colourOriginB = random.nextFloat();
8485
}
85-
newShapeSet.updateAllShapes();
8686
shapeSets.add(newShapeSet);
8787
}
8888

8989
public void initCheck() {
9090
if(!initialised) {
91+
if(fromPersistence) {
92+
for(ShapeSet shapeSet: shapeSets) {
93+
shapeSet.updateAllShapes();
94+
}
95+
}
96+
9197
if(shapeSets.size() == 0) {
9298
pushNewShapeSet();
99+
shapeSets.get(0).updateAllShapes();
93100
}
94101
for(ShapeSet s: shapeSets) {
95102
if(s.origin == null) {
96103
s.resetOrigin();
97104
}
98105
}
106+
99107
initialised = true;
100108
}
101109
}
@@ -222,6 +230,8 @@ public void loadPersistence(File persistenceFile) throws IOException {
222230
scanner.close();
223231
iShapeSet = Math.max(0, Math.min(shapeSets.size() - 1, iShapeSet));
224232
iShapeNew = Math.max(0, Math.min(ShapeRegistry.getNumberOfShapes() - 1, iShapeNew));
233+
234+
fromPersistence = true;
225235
}
226236

227237
public void savePersistence(File persistenceFile) throws IOException {

common/src/brentmaas/buildguide/common/screen/BaseScreen.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ public void init() {
4242
addWidget(buttonVisualisation);
4343
addWidget(buttonShapeList);
4444
addWidget(buttonConfiguration);
45+
46+
BuildGuide.stateManager.getState().initCheck();
4547
}
4648

4749
public void render() {

common/src/brentmaas/buildguide/common/screen/ShapeScreen.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ public class ShapeScreen extends BaseScreen{
5353
public void init() {
5454
super.init();
5555

56-
BuildGuide.stateManager.getState().initCheck();
57-
5856
if(!BuildGuide.stateManager.getState().isShapeAvailable()) {
5957
buttonShapePrevious.setActive(false);
6058
buttonShapeNext.setActive(false);

common/src/brentmaas/buildguide/common/screen/ShapelistScreen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class ShapelistScreen extends BaseScreen {
2121
private IButton buttonNewShapeNext = BuildGuide.widgetHandler.createButton(145, 70, 20, 20, "->", () -> updateNewShape(1));
2222
private IButton buttonAdd = BuildGuide.widgetHandler.createButton(5, 90, 160, 20, BuildGuide.screenHandler.translate("screen.buildguide.add"), () -> {
2323
BuildGuide.stateManager.getState().pushNewShapeSet();
24+
BuildGuide.stateManager.getState().getShapeSet(BuildGuide.stateManager.getState().getNumberOfShapeSets() - 1).updateAllShapes();
2425
shapeList.addEntry(BuildGuide.stateManager.getState().getNumberOfShapeSets() - 1);
2526

2627
checkActive();

common/src/brentmaas/buildguide/common/shape/Shape.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@ public void restorePersistence(String persistenceData) {
184184
for(int i = 0;i < properties.size();++i) {
185185
success = success & properties.get(i).setValueFromString(splitData[i]);
186186
}
187-
update();
188187
error = !success;
189188
}else {
190189
error = true;

common/src/brentmaas/buildguide/common/shape/ShapeSet.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ public ShapeSet(int startIndex) {
3636
private Shape initialiseShape(String shapeId) {
3737
Shape newShape = ShapeRegistry.getNewInstance(shapeId);
3838
newShape.shapeSet = this;
39-
newShape.update();
4039
return newShape;
4140
}
4241

@@ -98,6 +97,7 @@ public boolean isShapeAvailable(int index) {
9897
public Shape getShape() {
9998
if(shapes[index] == null) {
10099
shapes[index] = initialiseShape(ShapeRegistry.getClassIdentifier(index));
100+
shapes[index].update();
101101
}
102102

103103
return shapes[index];
@@ -164,11 +164,7 @@ public void restorePersistence(String persistenceData) {
164164
int index = ShapeRegistry.getShapeId(key);
165165
if(index >= 0) {
166166
shapes[index] = initialiseShape(key);
167-
// Lock wizardry due to classloading issues on Forge
168-
shapes[index].cancelFuture();
169-
shapes[index].lock.lock();
170167
shapes[index].restorePersistence(value);
171-
shapes[index].lock.unlock();
172168
}
173169
}
174170
}

0 commit comments

Comments
 (0)