Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features

This commit is contained in:
Anuken
2021-06-12 10:11:42 -04:00
5 changed files with 18 additions and 14 deletions

View File

@@ -7,7 +7,6 @@ import arc.math.*;
import arc.struct.*;
import arc.util.*;
import arc.util.serialization.*;
import mindustry.*;
import mindustry.mod.*;
import mindustry.net.*;
import mindustry.net.Net.*;
@@ -85,9 +84,6 @@ public interface Platform{
protected Context makeContext(){
Context ctx = super.makeContext();
ctx.setClassShutter(Scripts::allowClass);
if(Vars.mods != null){
ctx.setApplicationClassLoader(Vars.mods.mainLoader());
}
return ctx;
}
});

View File

@@ -4,7 +4,12 @@ import arc.struct.*;
public class ModClassLoader extends ClassLoader{
private Seq<ClassLoader> children = new Seq<>();
private volatile boolean inChild = false;
private ThreadLocal<Boolean> inChild = new ThreadLocal<>(){
@Override
protected Boolean initialValue(){
return Boolean.FALSE;
}
};
public void addChild(ClassLoader child){
children.add(child);
@@ -13,21 +18,25 @@ public class ModClassLoader extends ClassLoader{
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException{
//a child may try to delegate class loading to its parent, which is *this class loader* - do not let that happen
if(inChild) throw new ClassNotFoundException(name);
if(inChild.get()){
inChild.set(false);
throw new ClassNotFoundException(name);
}
ClassNotFoundException last = null;
int size = children.size;
inChild.set(true);
//if it doesn't exist in the main class loader, try all the children
for(int i = 0; i < size; i++){
try{
inChild = true;
var out = children.get(i).loadClass(name);
inChild = false;
return out;
return children.get(i).loadClass(name);
}catch(ClassNotFoundException e){
last = e;
}
}
inChild.set(false);
throw (last == null ? new ClassNotFoundException(name) : last);
}
}

View File

@@ -40,6 +40,8 @@ public class ImpactReactor extends PowerGenerator{
hasItems = true;
outputsPower = consumesPower = true;
flags = EnumSet.of(BlockFlag.reactor, BlockFlag.generator);
lightRadius = 115f;
emitLight = true;
}
@Override

View File

@@ -25,6 +25,7 @@ public class DrawSmelter extends DrawBlock{
@Override
public void load(Block block){
top = Core.atlas.find(block.name + "-top");
block.clipSize = Math.max(block.clipSize, (lightRadius + lightSinMag) * 2f * block.size);
}
@Override