Impl "disable-turn-timer", mod version 1.18.6
This commit is contained in:
parent
de5e66e98d
commit
e8f3c0cd52
13 changed files with 128 additions and 25 deletions
|
@ -58,7 +58,7 @@ configured for them.)
|
||||||
# Building
|
# Building
|
||||||
|
|
||||||
Simply invoke `./gradlew build` in the mod directory and after some time the
|
Simply invoke `./gradlew build` in the mod directory and after some time the
|
||||||
finished jar will be saved at "build/libs/TurnBasedMinecraft-1.18.5.jar"
|
finished jar will be saved at "build/libs/TurnBasedMinecraft-1.18.6.jar"
|
||||||
|
|
||||||
# Other notes
|
# Other notes
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ apply plugin: 'net.minecraftforge.gradle'
|
||||||
//apply plugin: 'eclipse'
|
//apply plugin: 'eclipse'
|
||||||
//apply plugin: 'maven-publish'
|
//apply plugin: 'maven-publish'
|
||||||
|
|
||||||
version = "1.18.5"
|
version = "1.18.6"
|
||||||
group = "com.burnedkirby.TurnBasedMinecraft"
|
group = "com.burnedkirby.TurnBasedMinecraft"
|
||||||
archivesBaseName = "TurnBasedMinecraft"
|
archivesBaseName = "TurnBasedMinecraft"
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
public class BattleGui extends Screen {
|
public class BattleGui extends Screen {
|
||||||
private AtomicInteger timeRemaining;
|
private AtomicInteger timeRemaining;
|
||||||
|
private boolean turnTimerEnabled;
|
||||||
private long lastInstant;
|
private long lastInstant;
|
||||||
private long elapsedTime;
|
private long elapsedTime;
|
||||||
private MenuState state;
|
private MenuState state;
|
||||||
|
@ -242,14 +243,19 @@ public class BattleGui extends Screen {
|
||||||
|
|
||||||
String timeRemainingString = "Time remaining: ";
|
String timeRemainingString = "Time remaining: ";
|
||||||
int timeRemainingInt = timeRemaining.get();
|
int timeRemainingInt = timeRemaining.get();
|
||||||
if (timeRemainingInt > 8) {
|
if (timeRemainingInt > 8 || !turnTimerEnabled) {
|
||||||
timeRemainingString += "\u00A7a";
|
timeRemainingString += "\u00A7a";
|
||||||
} else if (timeRemainingInt > 4) {
|
} else if (timeRemainingInt > 4) {
|
||||||
timeRemainingString += "\u00A7e";
|
timeRemainingString += "\u00A7e";
|
||||||
} else {
|
} else {
|
||||||
timeRemainingString += "\u00A7c";
|
timeRemainingString += "\u00A7c";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!turnTimerEnabled) {
|
||||||
|
timeRemainingString += "Infinity";
|
||||||
|
} else {
|
||||||
timeRemainingString += Integer.toString(timeRemainingInt);
|
timeRemainingString += Integer.toString(timeRemainingInt);
|
||||||
|
}
|
||||||
int stringWidth = font.width(timeRemainingString);
|
int stringWidth = font.width(timeRemainingString);
|
||||||
fill(poseStack, width / 2 - stringWidth / 2, 5, width / 2 + stringWidth / 2, 15, 0x70000000);
|
fill(poseStack, width / 2 - stringWidth / 2, 5, width / 2 + stringWidth / 2, 15, 0x70000000);
|
||||||
drawString(poseStack, timeRemainingString, width / 2 - stringWidth / 2, 5, 0xFFFFFFFF);
|
drawString(poseStack, timeRemainingString, width / 2 - stringWidth / 2, 5, 0xFFFFFFFF);
|
||||||
|
@ -349,4 +355,8 @@ public class BattleGui extends Screen {
|
||||||
private void drawString(PoseStack poseStack, String string, int x, int y, int color) {
|
private void drawString(PoseStack poseStack, String string, int x, int y, int color) {
|
||||||
font.draw(poseStack, string, x, y, color);
|
font.draw(poseStack, string, x, y, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTurnTimerEnabled(boolean enabled) {
|
||||||
|
turnTimerEnabled = enabled;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,11 @@ public class ClientProxy extends CommonProxy {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBattleGuiTurnTimerEnabled(boolean enabled) {
|
||||||
|
battleGui.setTurnTimerEnabled(enabled);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void battleGuiTurnBegin() {
|
public void battleGuiTurnBegin() {
|
||||||
battleGui.turnBegin();
|
battleGui.turnBegin();
|
||||||
|
@ -942,6 +947,26 @@ public class ClientProxy extends CommonProxy {
|
||||||
parent.append(sub);
|
parent.append(sub);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub = new TextComponent("battle_turn_wait_forever ");
|
||||||
|
sub.setStyle(sub.getStyle()
|
||||||
|
.withColor(ChatFormatting.YELLOW)
|
||||||
|
.withBold(true)
|
||||||
|
.withHoverEvent(new HoverEvent(
|
||||||
|
HoverEvent.Action.SHOW_TEXT,
|
||||||
|
new TextComponent("Disables the turn timer (recommended to leave this to false)"))
|
||||||
|
));
|
||||||
|
parent.append(sub);
|
||||||
|
|
||||||
|
sub = new TextComponent("true ");
|
||||||
|
sub.setStyle(sub.getStyle().withColor(ChatFormatting.GREEN).withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
|
||||||
|
"/tbm-server-edit battle_turn_wait_forever true")));
|
||||||
|
parent.append(sub);
|
||||||
|
|
||||||
|
sub = new TextComponent("false ");
|
||||||
|
sub.setStyle(sub.getStyle().withColor(ChatFormatting.GREEN).withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,
|
||||||
|
"/tbm-server-edit battle_turn_wait_forever false")));
|
||||||
|
parent.append(sub);
|
||||||
|
|
||||||
sub = new TextComponent("battle_turn_time_seconds ");
|
sub = new TextComponent("battle_turn_time_seconds ");
|
||||||
sub.setStyle(sub.getStyle()
|
sub.setStyle(sub.getStyle()
|
||||||
.withColor(ChatFormatting.YELLOW)
|
.withColor(ChatFormatting.YELLOW)
|
||||||
|
|
|
@ -34,6 +34,8 @@ public class Battle {
|
||||||
private long lastInstant;
|
private long lastInstant;
|
||||||
private long timer;
|
private long timer;
|
||||||
|
|
||||||
|
private boolean timerForever;
|
||||||
|
|
||||||
private boolean isServer;
|
private boolean isServer;
|
||||||
private boolean battleEnded;
|
private boolean battleEnded;
|
||||||
|
|
||||||
|
@ -208,6 +210,7 @@ public class Battle {
|
||||||
state = State.DECISION;
|
state = State.DECISION;
|
||||||
undecidedCount.set(playerCount.get());
|
undecidedCount.set(playerCount.get());
|
||||||
timer = TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos();
|
timer = TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos();
|
||||||
|
timerForever = TurnBasedMinecraftMod.proxy.getConfig().isBattleDecisionDurationForever();
|
||||||
battleEnded = false;
|
battleEnded = false;
|
||||||
|
|
||||||
notifyPlayersBattleInfo();
|
notifyPlayersBattleInfo();
|
||||||
|
@ -424,7 +427,11 @@ public class Battle {
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTimerSeconds() {
|
public long getTimerSeconds() {
|
||||||
return timer / 1000000000;
|
return timer / 1000000000L;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getTimerNanos() {
|
||||||
|
return timer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSize() {
|
public int getSize() {
|
||||||
|
@ -438,7 +445,7 @@ public class Battle {
|
||||||
if (!isServer) {
|
if (!isServer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PacketBattleInfo infoPacket = new PacketBattleInfo(getSideAIDs(), getSideBIDs(), timer);
|
PacketBattleInfo infoPacket = new PacketBattleInfo(getSideAIDs(), getSideBIDs(), timer, !TurnBasedMinecraftMod.proxy.getConfig().isBattleDecisionDurationForever());
|
||||||
for (Combatant p : players.values()) {
|
for (Combatant p : players.values()) {
|
||||||
TurnBasedMinecraftMod.getHandler().send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) p.entity), infoPacket);
|
TurnBasedMinecraftMod.getHandler().send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) p.entity), infoPacket);
|
||||||
}
|
}
|
||||||
|
@ -667,7 +674,7 @@ public class Battle {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case DECISION:
|
case DECISION:
|
||||||
timer -= dt;
|
timer -= dt;
|
||||||
if (timer <= 0 || undecidedCount.get() <= 0) {
|
if ((!timerForever && timer <= 0) || undecidedCount.get() <= 0) {
|
||||||
for (Combatant c : sideA.values()) {
|
for (Combatant c : sideA.values()) {
|
||||||
// picking decision for sideA non-players
|
// picking decision for sideA non-players
|
||||||
if (!(c.entity instanceof Player) && c.decision == Decision.UNDECIDED && c.entityInfo != null) {
|
if (!(c.entity instanceof Player) && c.decision == Decision.UNDECIDED && c.entityInfo != null) {
|
||||||
|
@ -711,6 +718,7 @@ public class Battle {
|
||||||
}
|
}
|
||||||
state = State.ACTION;
|
state = State.ACTION;
|
||||||
timer = TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos();
|
timer = TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos();
|
||||||
|
timerForever = TurnBasedMinecraftMod.proxy.getConfig().isBattleDecisionDurationForever();
|
||||||
sendMessageToAllPlayers(PacketBattleMessage.MessageType.TURN_BEGIN, 0, 0, 0);
|
sendMessageToAllPlayers(PacketBattleMessage.MessageType.TURN_BEGIN, 0, 0, 0);
|
||||||
turnOrderQueue.clear();
|
turnOrderQueue.clear();
|
||||||
for (Combatant c : sideA.values()) {
|
for (Combatant c : sideA.values()) {
|
||||||
|
|
|
@ -62,6 +62,8 @@ public class CommonProxy
|
||||||
|
|
||||||
public void setBattleGuiAsGui() {}
|
public void setBattleGuiAsGui() {}
|
||||||
|
|
||||||
|
public void setBattleGuiTurnTimerEnabled(boolean enabled) {}
|
||||||
|
|
||||||
public void battleGuiTurnBegin() {}
|
public void battleGuiTurnBegin() {}
|
||||||
|
|
||||||
public void battleGuiTurnEnd() {}
|
public void battleGuiTurnEnd() {}
|
||||||
|
|
|
@ -20,6 +20,7 @@ public class Config
|
||||||
public static final long BATTLE_DECISION_DURATION_NANO_MAX = BATTLE_DECISION_DURATION_SEC_MAX * 1000000000L;
|
public static final long BATTLE_DECISION_DURATION_NANO_MAX = BATTLE_DECISION_DURATION_SEC_MAX * 1000000000L;
|
||||||
public static final long BATTLE_DECISION_DURATION_NANO_DEFAULT = BATTLE_DECISION_DURATION_SEC_DEFAULT * 1000000000L;
|
public static final long BATTLE_DECISION_DURATION_NANO_DEFAULT = BATTLE_DECISION_DURATION_SEC_DEFAULT * 1000000000L;
|
||||||
private long battleDecisionDurationNanos = BATTLE_DECISION_DURATION_NANO_DEFAULT;
|
private long battleDecisionDurationNanos = BATTLE_DECISION_DURATION_NANO_DEFAULT;
|
||||||
|
private boolean battleDecisionDurationForever = false;
|
||||||
private Map<String, EntityInfo> entityInfoMap;
|
private Map<String, EntityInfo> entityInfoMap;
|
||||||
private Map<String, EntityInfo> customEntityInfoMap;
|
private Map<String, EntityInfo> customEntityInfoMap;
|
||||||
private Set<String> ignoreBattleTypes;
|
private Set<String> ignoreBattleTypes;
|
||||||
|
@ -494,6 +495,19 @@ public class Config
|
||||||
logTOMLInvalidValue("server_config.battle_turn_time_seconds", "15");
|
logTOMLInvalidValue("server_config.battle_turn_time_seconds", "15");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Boolean battle_turn_wait_forever = conf.get("server_config.battle_turn_wait_forever");
|
||||||
|
if (battle_turn_wait_forever != null) {
|
||||||
|
this.battleDecisionDurationForever = battle_turn_wait_forever;
|
||||||
|
} else {
|
||||||
|
this.battleDecisionDurationForever = false;
|
||||||
|
logNotFound("server_config.battle_turn_wait_forever", "false");
|
||||||
|
}
|
||||||
|
} catch (ClassCastException e) {
|
||||||
|
this.battleDecisionDurationForever = false;
|
||||||
|
logTOMLInvalidValue("server_config.battle_turn_wait_forever", "false");
|
||||||
|
}
|
||||||
|
|
||||||
Collection<com.electronwill.nightconfig.core.Config> entities = null;
|
Collection<com.electronwill.nightconfig.core.Config> entities = null;
|
||||||
try {
|
try {
|
||||||
entities = conf.get("server_config.entity");
|
entities = conf.get("server_config.entity");
|
||||||
|
@ -1430,4 +1444,12 @@ public class Config
|
||||||
public void setCreeperAlwaysAllowDamage(boolean allow_damage) {
|
public void setCreeperAlwaysAllowDamage(boolean allow_damage) {
|
||||||
creeperAlwaysAllowDamage = allow_damage;
|
creeperAlwaysAllowDamage = allow_damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isBattleDecisionDurationForever() {
|
||||||
|
return battleDecisionDurationForever;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBattleDecisionDurationForever(boolean battleDecisionDurationForever) {
|
||||||
|
this.battleDecisionDurationForever = battleDecisionDurationForever;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ import org.apache.logging.log4j.Logger;
|
||||||
public class TurnBasedMinecraftMod {
|
public class TurnBasedMinecraftMod {
|
||||||
public static final String MODID = "com_burnedkirby_turnbasedminecraft";
|
public static final String MODID = "com_burnedkirby_turnbasedminecraft";
|
||||||
public static final String NAME = "Turn Based Minecraft Mod";
|
public static final String NAME = "Turn Based Minecraft Mod";
|
||||||
public static final String VERSION = "1.18.5";
|
public static final String VERSION = "1.18.6";
|
||||||
public static final String CONFIG_FILENAME = "TBM_Config.toml";
|
public static final String CONFIG_FILENAME = "TBM_Config.toml";
|
||||||
public static final String DEFAULT_CONFIG_FILENAME = "TBM_Config_DEFAULT.toml";
|
public static final String DEFAULT_CONFIG_FILENAME = "TBM_Config_DEFAULT.toml";
|
||||||
public static final String CONFIG_DIRECTORY = "config/TurnBasedMinecraft/";
|
public static final String CONFIG_DIRECTORY = "config/TurnBasedMinecraft/";
|
||||||
|
@ -1337,6 +1337,32 @@ public class TurnBasedMinecraftMod {
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
})))
|
})))
|
||||||
|
.then(Commands.literal("battle_turn_wait_forever").executes(c -> {
|
||||||
|
TextComponent parent = new TextComponent("Use ");
|
||||||
|
TextComponent sub = new TextComponent("/tbm-server-edit battle_turn_wait_forever <true/false>");
|
||||||
|
sub.setStyle(sub.getStyle().withColor(ChatFormatting.YELLOW));
|
||||||
|
parent.append(sub);
|
||||||
|
|
||||||
|
c.getSource().sendSuccess(parent, false);
|
||||||
|
return 1;
|
||||||
|
})
|
||||||
|
.then(Commands.argument("enabled", BoolArgumentType.bool()).executes(c -> {
|
||||||
|
boolean enabled = BoolArgumentType.getBool(c, "enabled");
|
||||||
|
TurnBasedMinecraftMod.proxy.getConfig().setBattleDecisionDurationForever(enabled);
|
||||||
|
if (!TurnBasedMinecraftMod.proxy.getConfig().updateConfig("server_config.battle_turn_wait_forever", enabled)) {
|
||||||
|
TurnBasedMinecraftMod.logger.warn(
|
||||||
|
"Failed to set \"server_config.battle_turn_wait_forever\" in config file!"
|
||||||
|
);
|
||||||
|
c.getSource().sendFailure(new TextComponent("Failed to set battle_turn_wait_forever to \"" + (enabled ? "true" : "false") + "\" in config file!"));
|
||||||
|
} else {
|
||||||
|
TextComponent response = new TextComponent("Successfully set battle_turn_wait_forever to: ");
|
||||||
|
TextComponent subResponse = new TextComponent((enabled ? "true" : "false"));
|
||||||
|
subResponse.setStyle(subResponse.getStyle().withColor(ChatFormatting.GREEN));
|
||||||
|
response.append(subResponse);
|
||||||
|
c.getSource().sendSuccess(response, true);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
})))
|
||||||
.then(Commands.literal("battle_turn_time_seconds").executes(c -> {
|
.then(Commands.literal("battle_turn_time_seconds").executes(c -> {
|
||||||
TextComponent parent = new TextComponent("Use ");
|
TextComponent parent = new TextComponent("Use ");
|
||||||
TextComponent sub = new TextComponent("/tbm-server-edit battle_turn_time_seconds <5-60>");
|
TextComponent sub = new TextComponent("/tbm-server-edit battle_turn_time_seconds <5-60>");
|
||||||
|
|
|
@ -16,19 +16,22 @@ public class PacketBattleInfo
|
||||||
private Collection<Integer> sideA;
|
private Collection<Integer> sideA;
|
||||||
private Collection<Integer> sideB;
|
private Collection<Integer> sideB;
|
||||||
private long decisionNanos;
|
private long decisionNanos;
|
||||||
|
private boolean turnTimerEnabled;
|
||||||
|
|
||||||
public PacketBattleInfo()
|
public PacketBattleInfo()
|
||||||
{
|
{
|
||||||
sideA = new ArrayList<Integer>();
|
sideA = new ArrayList<Integer>();
|
||||||
sideB = new ArrayList<Integer>();
|
sideB = new ArrayList<Integer>();
|
||||||
decisionNanos = TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos();
|
decisionNanos = TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationNanos();
|
||||||
|
turnTimerEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PacketBattleInfo(Collection<Integer> sideA, Collection<Integer> sideB, long decisionNanos)
|
public PacketBattleInfo(Collection<Integer> sideA, Collection<Integer> sideB, long decisionNanos, boolean turnTimerEnabled)
|
||||||
{
|
{
|
||||||
this.sideA = sideA;
|
this.sideA = sideA;
|
||||||
this.sideB = sideB;
|
this.sideB = sideB;
|
||||||
this.decisionNanos = decisionNanos;
|
this.decisionNanos = decisionNanos;
|
||||||
|
this.turnTimerEnabled = turnTimerEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(PacketBattleInfo msg, FriendlyByteBuf buf) {
|
public static void encode(PacketBattleInfo msg, FriendlyByteBuf buf) {
|
||||||
|
@ -41,6 +44,7 @@ public class PacketBattleInfo
|
||||||
buf.writeInt(id);
|
buf.writeInt(id);
|
||||||
}
|
}
|
||||||
buf.writeLong(msg.decisionNanos);
|
buf.writeLong(msg.decisionNanos);
|
||||||
|
buf.writeBoolean(msg.turnTimerEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PacketBattleInfo decode(FriendlyByteBuf buf) {
|
public static PacketBattleInfo decode(FriendlyByteBuf buf) {
|
||||||
|
@ -55,7 +59,8 @@ public class PacketBattleInfo
|
||||||
sideB.add(buf.readInt());
|
sideB.add(buf.readInt());
|
||||||
}
|
}
|
||||||
long decisionNanos = buf.readLong();
|
long decisionNanos = buf.readLong();
|
||||||
return new PacketBattleInfo(sideA, sideB, decisionNanos);
|
boolean turnTimerEnabled = buf.readBoolean();
|
||||||
|
return new PacketBattleInfo(sideA, sideB, decisionNanos, turnTimerEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handle(final PacketBattleInfo pkt, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(final PacketBattleInfo pkt, Supplier<NetworkEvent.Context> ctx) {
|
||||||
|
@ -83,6 +88,7 @@ public class PacketBattleInfo
|
||||||
}
|
}
|
||||||
TurnBasedMinecraftMod.proxy.setBattleGuiTime((int)(pkt.decisionNanos / 1000000000L));
|
TurnBasedMinecraftMod.proxy.setBattleGuiTime((int)(pkt.decisionNanos / 1000000000L));
|
||||||
TurnBasedMinecraftMod.proxy.setBattleGuiBattleChanged();
|
TurnBasedMinecraftMod.proxy.setBattleGuiBattleChanged();
|
||||||
|
TurnBasedMinecraftMod.proxy.setBattleGuiTurnTimerEnabled(pkt.turnTimerEnabled);
|
||||||
});
|
});
|
||||||
ctx.get().setPacketHandled(true);
|
ctx.get().setPacketHandled(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class PacketBattleRequestInfo
|
||||||
if(b == null) {
|
if(b == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TurnBasedMinecraftMod.getHandler().reply(new PacketBattleInfo(b.getSideAIDs(), b.getSideBIDs(), b.getTimerSeconds()), ctx.get());
|
TurnBasedMinecraftMod.getHandler().reply(new PacketBattleInfo(b.getSideAIDs(), b.getSideBIDs(), b.getTimerNanos(), !TurnBasedMinecraftMod.proxy.getConfig().isBattleDecisionDurationForever()), ctx.get());
|
||||||
});
|
});
|
||||||
ctx.get().setPacketHandled(true);
|
ctx.get().setPacketHandled(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ license="MIT"
|
||||||
# The modid of the mod
|
# The modid of the mod
|
||||||
modId="com_burnedkirby_turnbasedminecraft" #mandatory
|
modId="com_burnedkirby_turnbasedminecraft" #mandatory
|
||||||
# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
|
# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
|
||||||
version="1.18.5" #mandatory
|
version="1.18.6" #mandatory
|
||||||
# A display name for the mod
|
# A display name for the mod
|
||||||
displayName="TurnBasedMinecraftMod" #mandatory
|
displayName="TurnBasedMinecraftMod" #mandatory
|
||||||
# A URL to query for updates for this mod. See the JSON update specification <here>
|
# A URL to query for updates for this mod. See the JSON update specification <here>
|
||||||
|
|
|
@ -36,29 +36,29 @@ anyone_can_disable_tbm_for_self = false
|
||||||
# will be added to battle until there are less than max entities.
|
# will be added to battle until there are less than max entities.
|
||||||
max_in_battle = 8
|
max_in_battle = 8
|
||||||
|
|
||||||
# If true, all entities in battle will be frozen in place
|
# If true, all entities in battle will be frozen in place.
|
||||||
freeze_battle_combatants = false
|
freeze_battle_combatants = false
|
||||||
|
|
||||||
# Entity categories that will not initiate battle.
|
# Entity categories that will not initiate battle.
|
||||||
ignore_battle_types = ["passive", "boss"]
|
ignore_battle_types = ["passive", "boss"]
|
||||||
|
|
||||||
# speed stat of all players in battle
|
# Speed stat of all players in battle.
|
||||||
player_speed = 50
|
player_speed = 50
|
||||||
# speed stat of all players under the effects of haste
|
# Speed stat of all players under the effects of haste.
|
||||||
player_haste_speed = 80
|
player_haste_speed = 80
|
||||||
# speed stat of all players under the effects of slow
|
# Speed stat of all players under the effects of slow.
|
||||||
player_slow_speed = 20
|
player_slow_speed = 20
|
||||||
# attack probability stat for all players
|
# Attack probability stat for all players.
|
||||||
player_attack_probability = 90
|
player_attack_probability = 90
|
||||||
# evasion stat for all players
|
# Evasion stat for all players.
|
||||||
player_evasion = 10
|
player_evasion = 10
|
||||||
|
|
||||||
# Number of attacks that a "defend" move will block
|
# Number of attacks that a "defend" move will block.
|
||||||
defense_duration = 1
|
defense_duration = 1
|
||||||
|
|
||||||
# probability of fleeing from battle when speed is greater than fastest enemy's speed
|
# Probability of fleeing from battle when speed is greater than fastest enemy's speed.
|
||||||
flee_good_probability = 90
|
flee_good_probability = 90
|
||||||
# probability of fleeing from battle when speed is less than fastest enemy's speed
|
# Probability of fleeing from battle when speed is less than fastest enemy's speed.
|
||||||
flee_bad_probability = 40
|
flee_bad_probability = 40
|
||||||
|
|
||||||
# Minimum hit percentage for everyone. If option is set to less than 1,
|
# Minimum hit percentage for everyone. If option is set to less than 1,
|
||||||
|
@ -69,13 +69,17 @@ minimum_hit_percentage = 4
|
||||||
# Minimum 5, maximum 60.
|
# Minimum 5, maximum 60.
|
||||||
battle_turn_time_seconds = 15
|
battle_turn_time_seconds = 15
|
||||||
|
|
||||||
# On what turn a Creeper will explode in battle
|
# If set to true, battle_turn_time_seconds will be ignored and there will be no turn timer.
|
||||||
|
# WARNING: If this is set to true, a player can halt a battle forever by never deciding on their turn.
|
||||||
|
battle_turn_wait_forever = false
|
||||||
|
|
||||||
|
# On what turn a Creeper will explode in battle.
|
||||||
creeper_explode_turn = 5
|
creeper_explode_turn = 5
|
||||||
|
|
||||||
# Keep creepers from exploding when they leave a battle (for leave_battle_cooldown duration)
|
# Keep creepers from exploding when they leave a battle (for leave_battle_cooldown duration).
|
||||||
creeper_stop_explode_on_leave_battle = true
|
creeper_stop_explode_on_leave_battle = true
|
||||||
|
|
||||||
# If false, creepers may not damage others outside of turn-based battle
|
# If false, creepers may not damage others outside of turn-based battle.
|
||||||
creeper_always_allow_damage = true
|
creeper_always_allow_damage = true
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"modid": "com_burnedkirby_turnbasedminecraft",
|
"modid": "com_burnedkirby_turnbasedminecraft",
|
||||||
"name": "Turn Based Minecraft",
|
"name": "Turn Based Minecraft",
|
||||||
"description": "Changes battles to be turn-based.",
|
"description": "Changes battles to be turn-based.",
|
||||||
"version": "1.18.5",
|
"version": "1.18.6",
|
||||||
"mcversion": "1.18.2",
|
"mcversion": "1.18.2",
|
||||||
"url": "",
|
"url": "",
|
||||||
"updateUrl": "",
|
"updateUrl": "",
|
||||||
|
|
Loading…
Reference in a new issue