mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-06 20:56:41 +00:00
Use a MaskTraverser to set extent where it will be a WorldWrapper otherwise
This commit is contained in:
@ -73,4 +73,57 @@ public class MaskTraverser {
|
||||
}
|
||||
}
|
||||
|
||||
public void setNewExtent(Extent newExtent) {
|
||||
setNewExtent(mask, newExtent);
|
||||
}
|
||||
|
||||
private void setNewExtent(Mask mask, Extent newExtent) {
|
||||
if (mask == null) {
|
||||
return;
|
||||
}
|
||||
Class<?> current = mask.getClass();
|
||||
while (current.getSuperclass() != null) {
|
||||
if (mask instanceof AbstractExtentMask) {
|
||||
AbstractExtentMask mask1 = (AbstractExtentMask) mask;
|
||||
mask1.setExtent(newExtent);
|
||||
} else {
|
||||
try {
|
||||
Field field = current.getDeclaredField("extent");
|
||||
field.setAccessible(true);
|
||||
field.set(mask, newExtent);
|
||||
} catch (NoSuchFieldException | IllegalAccessException ignored) {
|
||||
}
|
||||
}
|
||||
if (mask instanceof MaskIntersection) {
|
||||
MaskIntersection mask1 = (MaskIntersection) mask;
|
||||
try {
|
||||
Field field = mask1.getClass().getDeclaredField("masks");
|
||||
field.setAccessible(true);
|
||||
Collection<Mask> masks = (Collection<Mask>) field.get(mask);
|
||||
for (Mask next : masks) {
|
||||
setNewExtent(next, newExtent);
|
||||
}
|
||||
} catch (NoSuchFieldException | IllegalAccessException ignored) {
|
||||
}
|
||||
}
|
||||
try {
|
||||
Field field = current.getDeclaredField("mask");
|
||||
field.setAccessible(true);
|
||||
Mask next = (Mask) field.get(mask);
|
||||
setNewExtent(next, newExtent);
|
||||
} catch (NoSuchFieldException | IllegalAccessException ignored) {
|
||||
}
|
||||
try {
|
||||
Field field = current.getDeclaredField("masks");
|
||||
field.setAccessible(true);
|
||||
Collection<Mask> masks = (Collection<Mask>) field.get(mask);
|
||||
for (Mask next : masks) {
|
||||
setNewExtent(next, newExtent);
|
||||
}
|
||||
} catch (NoSuchFieldException | IllegalAccessException ignored) {
|
||||
}
|
||||
current = current.getSuperclass();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user