Added update trigger / Server moddability tweaks

This commit is contained in:
Anuken
2019-12-28 21:34:20 -05:00
parent b01d56aae8
commit 8c941c7165
8 changed files with 26 additions and 19 deletions

View File

@@ -209,6 +209,7 @@ public class Logic implements ApplicationListener{
@Override
public void update(){
Events.fire(Trigger.update);
if(!state.is(State.menu)){
if(!net.client()){
@@ -260,7 +261,7 @@ public class Logic implements ApplicationListener{
}
}
if(!net.client() && !world.isInvalidMap() && !state.isEditor()){
if(!net.client() && !world.isInvalidMap() && !state.isEditor() && !state.rules.canGameOver){
checkGameOver();
}
}

View File

@@ -217,7 +217,6 @@ public class NetServer implements ApplicationListener{
//playing in pvp mode automatically assigns players to teams
player.setTeam(assignTeam(player, playerGroup.all()));
Log.info("Auto-assigned player {0} to team {1}.", player.name, player.getTeam());
sendWorldData(player);

View File

@@ -29,7 +29,8 @@ public class EventType{
suicideBomb,
openWiki,
teamCoreDamage,
socketConfigChanged
socketConfigChanged,
update
}
public static class WinEvent{}

View File

@@ -70,6 +70,8 @@ public class Rules{
public boolean editor = false;
/** Whether the tutorial is enabled. False by default. */
public boolean tutorial = false;
/** Whether a gameover can happen at all. Set this to false to implement custom gameover conditions. */
public boolean canGameOver = true;
/** Starting items put in cores */
public Array<ItemStack> loadout = Array.with(ItemStack.with(Items.copper, 100));
/** Blocks that cannot be placed. */

View File

@@ -11,6 +11,7 @@ import mindustry.core.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.net.Administration.*;
import mindustry.net.Packets.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
@@ -126,13 +127,16 @@ public class BeControl{
len -> Core.app.post(() -> Log.info("&ly| Size: {0} MB.", Strings.fixed((float)len / 1024 / 1024, 2))),
progress -> {},
() -> false,
() -> {
() -> Core.app.post(() -> {
netServer.kickAll(KickReason.serverRestarting);
Threads.sleep(32);
Log.info("&lcVersion downloaded, exiting. Note that if you are not using a auto-restart script, the server will not restart automatically.");
//replace old file with new
dest.copyTo(source);
dest.delete();
System.exit(2); //this will cause a restart if using the script
},
}),
Throwable::printStackTrace);
}catch(Exception e){
e.printStackTrace();

View File

@@ -15,7 +15,8 @@ public class Packets{
public enum KickReason{
kick, clientOutdated, serverOutdated, banned, gameover(true), recentKick,
nameInUse, idInUse, nameEmpty, customClient, serverClose, vote, typeMismatch, whitelist, playerLimit;
nameInUse, idInUse, nameEmpty, customClient, serverClose, vote, typeMismatch,
whitelist, playerLimit, serverRestarting;
public final boolean quiet;