WIP porting to forge 1.14.4
This commit is contained in:
parent
f05e5e6a07
commit
d2f668187e
24 changed files with 2216 additions and 2262 deletions
181
build.gradle
181
build.gradle
|
@ -1,93 +1,150 @@
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
|
||||||
maven { url = "http://files.minecraftforge.net/maven" }
|
maven { url = "http://files.minecraftforge.net/maven" }
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
|
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
|
||||||
classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.1'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
apply plugin: 'net.minecraftforge.gradle.forge'
|
apply plugin: 'net.minecraftforge.gradle'
|
||||||
apply plugin: 'com.github.johnrengelman.shadow'
|
apply plugin: 'eclipse'
|
||||||
|
//apply plugin: 'maven-publish'
|
||||||
|
|
||||||
version = "1.8"
|
version = "1.9"
|
||||||
group = "com.seodisparate.TurnBasedMinecraft"
|
group = "com.seodisparate.TurnBasedMinecraft"
|
||||||
archivesBaseName = "TurnBasedMinecraft"
|
archivesBaseName = "TurnBasedMinecraft"
|
||||||
|
|
||||||
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
||||||
compileJava {
|
|
||||||
sourceCompatibility = targetCompatibility = '1.8'
|
|
||||||
}
|
|
||||||
|
|
||||||
minecraft {
|
minecraft {
|
||||||
version = "1.12.2-14.23.5.2768"
|
// The mappings can be changed at any time, and must be in the following format.
|
||||||
runDir = "run"
|
// snapshot_YYYYMMDD Snapshot are built nightly.
|
||||||
|
// stable_# Stables are built at the discretion of the MCP team.
|
||||||
// the mappings can be changed at any time, and must be in the following format.
|
|
||||||
// snapshot_YYYYMMDD snapshot are built nightly.
|
|
||||||
// stable_# stables are built at the discretion of the MCP team.
|
|
||||||
// Use non-default mappings at your own risk. they may not always work.
|
// Use non-default mappings at your own risk. they may not always work.
|
||||||
// simply re-run your setup task after changing the mappings to update your workspace.
|
// Simply re-run your setup task after changing the mappings to update your workspace.
|
||||||
mappings = "snapshot_20171003"
|
mappings channel: 'snapshot', version: '20190719-1.14.3'
|
||||||
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
|
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
|
||||||
|
|
||||||
|
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||||
|
|
||||||
|
// Default run configurations.
|
||||||
|
// These can be tweaked, removed, or duplicated as needed.
|
||||||
|
runs {
|
||||||
|
client {
|
||||||
|
workingDirectory project.file('run')
|
||||||
|
|
||||||
|
// Recommended logging data for a userdev environment
|
||||||
|
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||||
|
|
||||||
|
// Recommended logging level for the console
|
||||||
|
property 'forge.logging.console.level', 'debug'
|
||||||
|
|
||||||
|
mods {
|
||||||
|
TurnBasedMinecraftMod {
|
||||||
|
source sourceSets.main
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
workingDirectory project.file('run')
|
||||||
|
|
||||||
|
// Recommended logging data for a userdev environment
|
||||||
|
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||||
|
|
||||||
|
// Recommended logging level for the console
|
||||||
|
property 'forge.logging.console.level', 'debug'
|
||||||
|
|
||||||
|
mods {
|
||||||
|
TurnBasedMinecraftMod {
|
||||||
|
source sourceSets.main
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data {
|
||||||
|
workingDirectory project.file('run')
|
||||||
|
|
||||||
|
// Recommended logging data for a userdev environment
|
||||||
|
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||||
|
|
||||||
|
// Recommended logging level for the console
|
||||||
|
property 'forge.logging.console.level', 'debug'
|
||||||
|
|
||||||
|
args '--mod', 'TurnBasedMinecraftMod', '--all', '--output', file('src/generated/resources/')
|
||||||
|
|
||||||
|
mods {
|
||||||
|
TurnBasedMinecraftMod {
|
||||||
|
source sourceSets.main
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// you may put jars on which you depend on in ./libs
|
// Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
|
||||||
// or you may define them like so..
|
// that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
|
||||||
//compile "some.group:artifact:version:classifier"
|
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
|
||||||
//compile "some.group:artifact:version"
|
minecraft 'net.minecraftforge:forge:1.14.4-28.1.0'
|
||||||
|
|
||||||
// toml parser
|
// You may put jars on which you depend on in ./libs or you may define them like so..
|
||||||
compile "net.consensys.cava:cava-toml:0.3.1"
|
// compile "some.group:artifact:version:classifier"
|
||||||
|
// compile "some.group:artifact:version"
|
||||||
// real examples
|
|
||||||
//compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
|
|
||||||
//compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
|
|
||||||
|
|
||||||
// the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
|
// Real examples
|
||||||
//provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
// compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
|
||||||
|
// compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
|
||||||
|
|
||||||
// the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided,
|
// The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
|
||||||
// except that these dependencies get remapped to your current MCP mappings
|
// provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
||||||
//deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
|
||||||
//deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
|
||||||
|
|
||||||
// for more info...
|
// These dependencies get remapped to your current MCP mappings
|
||||||
|
// deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
||||||
|
|
||||||
|
// For more info...
|
||||||
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
||||||
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
||||||
|
|
||||||
|
compile files('src/main/resources/META-INF/libraries/javamp3-1.0.3.jar')
|
||||||
}
|
}
|
||||||
|
|
||||||
processResources {
|
// Example for how to get properties into the manifest for reading by the runtime..
|
||||||
// this will ensure that this task is redone when the versions change.
|
jar {
|
||||||
inputs.property "version", project.version
|
manifest {
|
||||||
inputs.property "mcversion", project.minecraft.version
|
attributes([
|
||||||
|
"Specification-Title": "TurnBasedMinecraftMod",
|
||||||
// replace stuff in mcmod.info, nothing else
|
"Specification-Vendor": "TurnBasedMinecraftMod_SS",
|
||||||
from(sourceSets.main.resources.srcDirs) {
|
"Specification-Version": "1", // We are version 1 of ourselves
|
||||||
include 'mcmod.info'
|
"Implementation-Title": project.name,
|
||||||
|
"Implementation-Version": "${version}",
|
||||||
// replace version and mcversion
|
"Implementation-Vendor" :"TurnBasedMinecraftMod_SS",
|
||||||
expand 'version':project.version, 'mcversion':project.minecraft.version
|
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
|
||||||
}
|
"ContainedDeps": "javamp3-1.0.3.jar"
|
||||||
|
])
|
||||||
// copy everything else except the mcmod.info
|
|
||||||
from(sourceSets.main.resources.srcDirs) {
|
|
||||||
exclude 'mcmod.info'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
shadowJar {
|
// Example configuration to allow publishing using the maven-publish task
|
||||||
classifier ""
|
// we define a custom artifact that is sourced from the reobfJar output task
|
||||||
|
// and then declare that to be published
|
||||||
relocate 'net.consensys.cava', 'shadow.turnbasedmc.net.consensys.cava'
|
// Note you'll need to add a repository here
|
||||||
relocate 'org.antlr.v4', 'shadow.turnbasedmc.org.antlr.v4'
|
def reobfFile = file("$buildDir/reobfJar/output.jar")
|
||||||
relocate 'javax.annotation', 'shadow.turnbasedmc.javax.annotation'
|
def reobfArtifact = artifacts.add('default', reobfFile) {
|
||||||
|
type 'jar'
|
||||||
relocate 'fr.delthas', 'shadow.turnbasedmc.fr.delthas'
|
builtBy 'reobfJar'
|
||||||
}
|
}
|
||||||
|
//publishing {
|
||||||
reobf { shadowJar { mappingType = "SEARGE" } }
|
// publications {
|
||||||
tasks.reobfShadowJar.mustRunAfter shadowJar
|
// mavenJava(MavenPublication) {
|
||||||
|
// artifact reobfArtifact
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// repositories {
|
||||||
|
// maven {
|
||||||
|
// url "file:///${project.projectDir}/mcmodsrepo"
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.client;
|
package com.seodisparate.TurnBasedMinecraft.client;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ConcurrentModificationException;
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -13,370 +12,334 @@ import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleDecision;
|
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleDecision;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.client.gui.GuiScreen;
|
import net.minecraft.client.gui.widget.button.Button;
|
||||||
|
import net.minecraft.util.text.StringTextComponent;
|
||||||
|
|
||||||
public class BattleGui extends GuiScreen
|
public class BattleGui extends Screen {
|
||||||
{
|
private AtomicInteger timeRemaining;
|
||||||
private AtomicInteger timeRemaining;
|
private long lastInstant;
|
||||||
private long lastInstant;
|
private long elapsedTime;
|
||||||
private long elapsedTime;
|
private MenuState state;
|
||||||
private MenuState state;
|
private boolean stateChanged;
|
||||||
private boolean stateChanged;
|
private String info;
|
||||||
private String info;
|
|
||||||
|
|
||||||
private enum MenuState
|
|
||||||
{
|
|
||||||
MAIN_MENU(0),
|
|
||||||
ATTACK_TARGET(1),
|
|
||||||
ITEM_ACTION(2),
|
|
||||||
WAITING(3),
|
|
||||||
SWITCH_ITEM(4),
|
|
||||||
USE_ITEM(5);
|
|
||||||
|
|
||||||
private int value;
|
|
||||||
|
|
||||||
MenuState(int value)
|
|
||||||
{
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getValue()
|
|
||||||
{
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Map<Integer, MenuState> map;
|
|
||||||
|
|
||||||
static
|
|
||||||
{
|
|
||||||
map = new HashMap<Integer, MenuState>();
|
|
||||||
for(MenuState state : MenuState.values())
|
|
||||||
{
|
|
||||||
map.put(state.getValue(), state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MenuState valueOf(int value)
|
|
||||||
{
|
|
||||||
return map.get(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum ButtonAction
|
|
||||||
{
|
|
||||||
ATTACK(0),
|
|
||||||
DEFEND(1),
|
|
||||||
ITEM(2),
|
|
||||||
FLEE(3),
|
|
||||||
ATTACK_TARGET(4),
|
|
||||||
SWITCH_HELD_ITEM(5),
|
|
||||||
DECIDE_USE_ITEM(6),
|
|
||||||
CANCEL(7),
|
|
||||||
DO_ITEM_SWITCH(8),
|
|
||||||
DO_USE_ITEM(9);
|
|
||||||
|
|
||||||
private int value;
|
|
||||||
|
|
||||||
ButtonAction(int value)
|
|
||||||
{
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getValue()
|
|
||||||
{
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Map<Integer, ButtonAction> map;
|
|
||||||
static
|
|
||||||
{
|
|
||||||
map = new HashMap<Integer, ButtonAction>();
|
|
||||||
for(ButtonAction action : ButtonAction.values())
|
|
||||||
{
|
|
||||||
map.put(action.getValue(), action);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ButtonAction valueOf(int value)
|
|
||||||
{
|
|
||||||
return map.get(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public BattleGui()
|
|
||||||
{
|
|
||||||
timeRemaining = new AtomicInteger((int)(Config.BATTLE_DECISION_DURATION_NANO_DEFAULT / 1000000000L));
|
|
||||||
lastInstant = System.nanoTime();
|
|
||||||
elapsedTime = 0;
|
|
||||||
state = MenuState.MAIN_MENU;
|
|
||||||
stateChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setState(MenuState state)
|
|
||||||
{
|
|
||||||
this.state = state;
|
|
||||||
stateChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void turnBegin()
|
|
||||||
{
|
|
||||||
if(TurnBasedMinecraftMod.proxy.getLocalBattle() != null)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.getLocalBattle().setState(Battle.State.ACTION);
|
|
||||||
}
|
|
||||||
setState(MenuState.WAITING);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void turnEnd()
|
|
||||||
{
|
|
||||||
if(TurnBasedMinecraftMod.proxy.getLocalBattle() != null)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.getLocalBattle().setState(Battle.State.DECISION);
|
|
||||||
}
|
|
||||||
timeRemaining.set(TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationSeconds());
|
|
||||||
elapsedTime = 0;
|
|
||||||
lastInstant = System.nanoTime();
|
|
||||||
setState(MenuState.MAIN_MENU);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void battleChanged()
|
|
||||||
{
|
|
||||||
stateChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateState()
|
|
||||||
{
|
|
||||||
if(!stateChanged)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
stateChanged = false;
|
|
||||||
buttonList.clear();
|
|
||||||
switch(state)
|
|
||||||
{
|
|
||||||
case MAIN_MENU:
|
|
||||||
info = "What will you do?";
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.ATTACK.getValue(), width*3/7 - 25, 40, 50, 20, "Attack"));
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.DEFEND.getValue(), width*4/7 - 25, 40, 50, 20, "Defend"));
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.ITEM.getValue(), width*3/7 - 25, 60, 50, 20, "Item"));
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.FLEE.getValue(), width*4/7 - 25, 60, 50, 20, "Flee"));
|
|
||||||
break;
|
|
||||||
case ATTACK_TARGET:
|
|
||||||
info = "Who will you attack?";
|
|
||||||
int y = 30;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideAEntrySet())
|
|
||||||
{
|
|
||||||
if(e.getValue().entity != null)
|
|
||||||
{
|
|
||||||
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), true));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, "Unknown", e.getKey(), true));
|
|
||||||
}
|
|
||||||
y += 20;
|
|
||||||
}
|
|
||||||
} catch (ConcurrentModificationException e)
|
|
||||||
{
|
|
||||||
// ignored
|
|
||||||
}
|
|
||||||
y = 30;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideBEntrySet())
|
|
||||||
{
|
|
||||||
if(e.getValue().entity != null)
|
|
||||||
{
|
|
||||||
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), false));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, "Unknown", e.getKey(), false));
|
|
||||||
}
|
|
||||||
y += 20;
|
|
||||||
}
|
|
||||||
} catch (ConcurrentModificationException e)
|
|
||||||
{
|
|
||||||
// ignored
|
|
||||||
}
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 30, height - 120, 60, 20, "Cancel"));
|
|
||||||
break;
|
|
||||||
case ITEM_ACTION:
|
|
||||||
info = "What will you do with an item?";
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.SWITCH_HELD_ITEM.getValue(), width*1/4 - 40, height - 120, 80, 20, "Switch Held"));
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.DECIDE_USE_ITEM.getValue(), width*2/4 - 40, height - 120, 80, 20, "Use"));
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width*3/4 - 40, height - 120, 80, 20, "Cancel"));
|
|
||||||
break;
|
|
||||||
case WAITING:
|
|
||||||
info = "Waiting...";
|
|
||||||
break;
|
|
||||||
case SWITCH_ITEM:
|
|
||||||
info = "To which item will you switch to?";
|
|
||||||
for(int i = 0; i < 9; ++i)
|
|
||||||
{
|
|
||||||
buttonList.add(new ItemSelectionButton(ButtonAction.DO_ITEM_SWITCH.getValue(), width/2 - 88 + i * 20, height - 19, 16, 16, "", i));
|
|
||||||
}
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 40, height - 120, 80, 20, "Cancel"));
|
|
||||||
break;
|
|
||||||
case USE_ITEM:
|
|
||||||
info = "Which item will you use?";
|
|
||||||
for(int i = 0; i < 9; ++i)
|
|
||||||
{
|
|
||||||
buttonList.add(new ItemSelectionButton(ButtonAction.DO_USE_ITEM.getValue(), width/2 - 88 + i * 20, height - 19, 16, 16, "", i));
|
|
||||||
}
|
|
||||||
buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 40, height - 120, 80, 20, "Cancel"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
private enum MenuState {
|
||||||
public void drawScreen(int mouseX, int mouseY, float partialTicks)
|
MAIN_MENU(0), ATTACK_TARGET(1), ITEM_ACTION(2), WAITING(3), SWITCH_ITEM(4), USE_ITEM(5);
|
||||||
{
|
|
||||||
if(TurnBasedMinecraftMod.proxy.getLocalBattle() == null)
|
|
||||||
{
|
|
||||||
drawHoveringText("Waiting...", width / 2 - 50, height / 2);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(TurnBasedMinecraftMod.proxy.getLocalBattle().getState() == Battle.State.DECISION && timeRemaining.get() > 0)
|
|
||||||
{
|
|
||||||
long nextInstant = System.nanoTime();
|
|
||||||
elapsedTime += nextInstant - lastInstant;
|
|
||||||
lastInstant = nextInstant;
|
|
||||||
while(elapsedTime > 1000000000)
|
|
||||||
{
|
|
||||||
elapsedTime -= 1000000000;
|
|
||||||
timeRemaining.decrementAndGet();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateState();
|
|
||||||
|
|
||||||
super.drawScreen(mouseX, mouseY, partialTicks);
|
|
||||||
|
|
||||||
String timeRemainingString = "Time remaining: ";
|
|
||||||
int timeRemainingInt = timeRemaining.get();
|
|
||||||
if(timeRemainingInt > 8)
|
|
||||||
{
|
|
||||||
timeRemainingString += "\u00A7a";
|
|
||||||
}
|
|
||||||
else if(timeRemainingInt > 4)
|
|
||||||
{
|
|
||||||
timeRemainingString += "\u00A7e";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
timeRemainingString += "\u00A7c";
|
|
||||||
}
|
|
||||||
timeRemainingString += Integer.toString(timeRemainingInt);
|
|
||||||
int stringWidth = Minecraft.getMinecraft().fontRenderer.getStringWidth(timeRemainingString);
|
|
||||||
drawRect(width/2 - stringWidth/2, 5, width/2 + stringWidth/2, 15, 0x70000000);
|
|
||||||
Minecraft.getMinecraft().fontRenderer.drawString(timeRemainingString, width/2 - stringWidth/2, 5, 0xFFFFFFFF);
|
|
||||||
stringWidth = Minecraft.getMinecraft().fontRenderer.getStringWidth(info);
|
|
||||||
drawRect(width/2 - stringWidth/2, 20, width/2 + stringWidth/2, 30, 0x70000000);
|
|
||||||
Minecraft.getMinecraft().fontRenderer.drawString(info, width/2 - stringWidth/2, 20, 0xFFFFFFFF);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
private int value;
|
||||||
protected void actionPerformed(GuiButton button) throws IOException
|
|
||||||
{
|
|
||||||
switch(ButtonAction.valueOf(button.id))
|
|
||||||
{
|
|
||||||
case ATTACK:
|
|
||||||
setState(MenuState.ATTACK_TARGET);
|
|
||||||
break;
|
|
||||||
case DEFEND:
|
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendToServer(new PacketBattleDecision(TurnBasedMinecraftMod.proxy.getLocalBattle().getId(), Battle.Decision.DEFEND, 0));
|
|
||||||
setState(MenuState.WAITING);
|
|
||||||
break;
|
|
||||||
case ITEM:
|
|
||||||
setState(MenuState.ITEM_ACTION);
|
|
||||||
break;
|
|
||||||
case FLEE:
|
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendToServer(new PacketBattleDecision(TurnBasedMinecraftMod.proxy.getLocalBattle().getId(), Battle.Decision.FLEE, 0));
|
|
||||||
setState(MenuState.WAITING);
|
|
||||||
break;
|
|
||||||
case ATTACK_TARGET:
|
|
||||||
if(button instanceof EntitySelectionButton)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendToServer(new PacketBattleDecision(TurnBasedMinecraftMod.proxy.getLocalBattle().getId(), Battle.Decision.ATTACK, ((EntitySelectionButton)button).entityID));
|
|
||||||
setState(MenuState.WAITING);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setState(MenuState.MAIN_MENU);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SWITCH_HELD_ITEM:
|
|
||||||
setState(MenuState.SWITCH_ITEM);
|
|
||||||
break;
|
|
||||||
case DECIDE_USE_ITEM:
|
|
||||||
setState(MenuState.USE_ITEM);
|
|
||||||
break;
|
|
||||||
case CANCEL:
|
|
||||||
setState(MenuState.MAIN_MENU);
|
|
||||||
break;
|
|
||||||
case DO_ITEM_SWITCH:
|
|
||||||
if(button instanceof ItemSelectionButton)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendToServer(new PacketBattleDecision(TurnBasedMinecraftMod.proxy.getLocalBattle().getId(), Battle.Decision.SWITCH_ITEM, ((ItemSelectionButton)button).itemStackID));
|
|
||||||
if(((ItemSelectionButton)button).itemStackID >= 0 && ((ItemSelectionButton)button).itemStackID < 9)
|
|
||||||
{
|
|
||||||
Minecraft.getMinecraft().player.inventory.currentItem = ((ItemSelectionButton)button).itemStackID;
|
|
||||||
}
|
|
||||||
setState(MenuState.WAITING);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setState(MenuState.MAIN_MENU);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DO_USE_ITEM:
|
|
||||||
if(button instanceof ItemSelectionButton)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendToServer(new PacketBattleDecision(TurnBasedMinecraftMod.proxy.getLocalBattle().getId(), Battle.Decision.USE_ITEM, ((ItemSelectionButton)button).itemStackID));
|
|
||||||
setState(MenuState.WAITING);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setState(MenuState.MAIN_MENU);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
MenuState(int value) {
|
||||||
public void initGui()
|
this.value = value;
|
||||||
{
|
}
|
||||||
super.initGui();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public int getValue() {
|
||||||
public void onGuiClosed()
|
return value;
|
||||||
{
|
}
|
||||||
super.onGuiClosed();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
private static Map<Integer, MenuState> map;
|
||||||
public boolean doesGuiPauseGame()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
static {
|
||||||
protected void keyTyped(char typedChar, int keyCode) throws IOException
|
map = new HashMap<Integer, MenuState>();
|
||||||
{
|
for (MenuState state : MenuState.values()) {
|
||||||
if(Minecraft.getMinecraft().player.isCreative())
|
map.put(state.getValue(), state);
|
||||||
{
|
}
|
||||||
super.keyTyped(typedChar, keyCode);
|
}
|
||||||
}
|
|
||||||
}
|
public static MenuState valueOf(int value) {
|
||||||
|
return map.get(value);
|
||||||
public void setTimeRemaining(int remaining)
|
}
|
||||||
{
|
}
|
||||||
timeRemaining.set(remaining);
|
|
||||||
}
|
private enum ButtonAction {
|
||||||
|
ATTACK(0), DEFEND(1), ITEM(2), FLEE(3), ATTACK_TARGET(4), SWITCH_HELD_ITEM(5), DECIDE_USE_ITEM(6), CANCEL(7),
|
||||||
|
DO_ITEM_SWITCH(8), DO_USE_ITEM(9);
|
||||||
|
|
||||||
|
private int value;
|
||||||
|
|
||||||
|
ButtonAction(int value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Map<Integer, ButtonAction> map;
|
||||||
|
static {
|
||||||
|
map = new HashMap<Integer, ButtonAction>();
|
||||||
|
for (ButtonAction action : ButtonAction.values()) {
|
||||||
|
map.put(action.getValue(), action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ButtonAction valueOf(int value) {
|
||||||
|
return map.get(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BattleGui() {
|
||||||
|
super(new StringTextComponent("Battle Gui"));
|
||||||
|
timeRemaining = new AtomicInteger((int) (Config.BATTLE_DECISION_DURATION_NANO_DEFAULT / 1000000000L));
|
||||||
|
lastInstant = System.nanoTime();
|
||||||
|
elapsedTime = 0;
|
||||||
|
state = MenuState.MAIN_MENU;
|
||||||
|
stateChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setState(MenuState state) {
|
||||||
|
this.state = state;
|
||||||
|
stateChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void turnBegin() {
|
||||||
|
if (TurnBasedMinecraftMod.proxy.getLocalBattle() != null) {
|
||||||
|
TurnBasedMinecraftMod.proxy.getLocalBattle().setState(Battle.State.ACTION);
|
||||||
|
}
|
||||||
|
setState(MenuState.WAITING);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void turnEnd() {
|
||||||
|
if (TurnBasedMinecraftMod.proxy.getLocalBattle() != null) {
|
||||||
|
TurnBasedMinecraftMod.proxy.getLocalBattle().setState(Battle.State.DECISION);
|
||||||
|
}
|
||||||
|
timeRemaining.set(TurnBasedMinecraftMod.proxy.getConfig().getDecisionDurationSeconds());
|
||||||
|
elapsedTime = 0;
|
||||||
|
lastInstant = System.nanoTime();
|
||||||
|
setState(MenuState.MAIN_MENU);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void battleChanged() {
|
||||||
|
stateChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateState() {
|
||||||
|
if (!stateChanged) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
stateChanged = false;
|
||||||
|
buttons.clear();
|
||||||
|
children.clear();
|
||||||
|
switch (state) {
|
||||||
|
case MAIN_MENU:
|
||||||
|
info = "What will you do?";
|
||||||
|
addButton(new Button(width * 3 / 7 - 25, 40, 50, 20, "Attack", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.ATTACK);
|
||||||
|
}));
|
||||||
|
addButton(new Button(width * 4 / 7 - 25, 40, 50, 20, "Defend", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.DEFEND);
|
||||||
|
}));
|
||||||
|
addButton(new Button(width * 3 / 7 - 25, 60, 50, 20, "Item", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.ITEM);
|
||||||
|
}));
|
||||||
|
addButton(new Button(width * 4 / 7 - 25, 60, 50, 20, "Flee", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.FLEE);
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
case ATTACK_TARGET:
|
||||||
|
info = "Who will you attack?";
|
||||||
|
int y = 30;
|
||||||
|
try {
|
||||||
|
for (Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle()
|
||||||
|
.getSideAEntrySet()) {
|
||||||
|
if (e.getValue().entity != null) {
|
||||||
|
addButton(new EntitySelectionButton(width / 4 - 60, y, 120, 20, e.getValue().entity.getName().getString(), e.getKey(), true, (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.ATTACK_TARGET);
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
addButton(new EntitySelectionButton(width / 4 - 60, y, 120, 20, "Unknown", e.getKey(), true, (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.ATTACK_TARGET);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
y += 20;
|
||||||
|
}
|
||||||
|
} catch (ConcurrentModificationException e) {
|
||||||
|
// ignored
|
||||||
|
}
|
||||||
|
y = 30;
|
||||||
|
try {
|
||||||
|
for (Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle()
|
||||||
|
.getSideBEntrySet()) {
|
||||||
|
if (e.getValue().entity != null) {
|
||||||
|
addButton(new EntitySelectionButton(width * 3 / 4 - 60, y, 120, 20, e.getValue().entity.getName().getString(), e.getKey(), false, (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.ATTACK_TARGET);
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
addButton(new EntitySelectionButton(width * 3 / 4 - 60, y, 120, 20, "Unknown", e.getKey(), false, (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.ATTACK_TARGET);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
y += 20;
|
||||||
|
}
|
||||||
|
} catch (ConcurrentModificationException e) {
|
||||||
|
// ignored
|
||||||
|
}
|
||||||
|
addButton(new Button(width / 2 - 30, height - 120, 60, 20, "Cancel", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.CANCEL);
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
case ITEM_ACTION:
|
||||||
|
info = "What will you do with an item?";
|
||||||
|
addButton(new Button(width * 1 / 4 - 40, height - 120, 80, 20, "Switch Held", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.SWITCH_HELD_ITEM);
|
||||||
|
}));
|
||||||
|
addButton(new Button(width * 2 / 4 - 40, height - 120, 80, 20, "Use", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.DECIDE_USE_ITEM);
|
||||||
|
}));
|
||||||
|
addButton(new Button(width * 3 / 4 - 40, height - 120, 80, 20, "Cancel", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.CANCEL);
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
case WAITING:
|
||||||
|
info = "Waiting...";
|
||||||
|
break;
|
||||||
|
case SWITCH_ITEM:
|
||||||
|
info = "To which item will you switch to?";
|
||||||
|
for (int i = 0; i < 9; ++i) {
|
||||||
|
addButton(new ItemSelectionButton(width / 2 - 88 + i * 20, height - 19, 16, 16, "", i, (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.DO_ITEM_SWITCH);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
addButton(new Button(width / 2 - 40, height - 120, 80, 20, "Cancel", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.CANCEL);
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
case USE_ITEM:
|
||||||
|
info = "Which item will you use?";
|
||||||
|
for (int i = 0; i < 9; ++i) {
|
||||||
|
addButton(new ItemSelectionButton(width / 2 - 88 + i * 20, height - 19, 16, 16, "", i, (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.DO_USE_ITEM);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
addButton(new Button(width / 2 - 40, height - 120, 80, 20, "Cancel", (button) -> {
|
||||||
|
buttonActionEvent(button, ButtonAction.CANCEL);
|
||||||
|
}));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(int mouseX, int mouseY, float partialTicks) {
|
||||||
|
if (TurnBasedMinecraftMod.proxy.getLocalBattle() == null) {
|
||||||
|
// drawHoveringText("Waiting...", width / 2 - 50, height / 2);
|
||||||
|
getMinecraft().fontRenderer.drawString("Waiting...", width / 2 - 50, height / 2, 0xFFFFFFFF);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (TurnBasedMinecraftMod.proxy.getLocalBattle().getState() == Battle.State.DECISION
|
||||||
|
&& timeRemaining.get() > 0) {
|
||||||
|
long nextInstant = System.nanoTime();
|
||||||
|
elapsedTime += nextInstant - lastInstant;
|
||||||
|
lastInstant = nextInstant;
|
||||||
|
while (elapsedTime > 1000000000) {
|
||||||
|
elapsedTime -= 1000000000;
|
||||||
|
timeRemaining.decrementAndGet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateState();
|
||||||
|
|
||||||
|
super.render(mouseX, mouseY, partialTicks);
|
||||||
|
|
||||||
|
String timeRemainingString = "Time remaining: ";
|
||||||
|
int timeRemainingInt = timeRemaining.get();
|
||||||
|
if (timeRemainingInt > 8) {
|
||||||
|
timeRemainingString += "\u00A7a";
|
||||||
|
} else if (timeRemainingInt > 4) {
|
||||||
|
timeRemainingString += "\u00A7e";
|
||||||
|
} else {
|
||||||
|
timeRemainingString += "\u00A7c";
|
||||||
|
}
|
||||||
|
timeRemainingString += Integer.toString(timeRemainingInt);
|
||||||
|
int stringWidth = getMinecraft().fontRenderer.getStringWidth(timeRemainingString);
|
||||||
|
fill(width / 2 - stringWidth / 2, 5, width / 2 + stringWidth / 2, 15, 0x70000000);
|
||||||
|
getMinecraft().fontRenderer.drawString(timeRemainingString, width / 2 - stringWidth / 2, 5, 0xFFFFFFFF);
|
||||||
|
stringWidth = getMinecraft().fontRenderer.getStringWidth(info);
|
||||||
|
fill(width / 2 - stringWidth / 2, 20, width / 2 + stringWidth / 2, 30, 0x70000000);
|
||||||
|
getMinecraft().fontRenderer.drawString(info, width / 2 - stringWidth / 2, 20, 0xFFFFFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void buttonActionEvent(Button button, ButtonAction action) {
|
||||||
|
switch (action) {
|
||||||
|
case ATTACK:
|
||||||
|
setState(MenuState.ATTACK_TARGET);
|
||||||
|
break;
|
||||||
|
case DEFEND:
|
||||||
|
TurnBasedMinecraftMod.getHandler().sendToServer(new PacketBattleDecision(
|
||||||
|
TurnBasedMinecraftMod.proxy.getLocalBattle().getId(), Battle.Decision.DEFEND, 0));
|
||||||
|
setState(MenuState.WAITING);
|
||||||
|
break;
|
||||||
|
case ITEM:
|
||||||
|
setState(MenuState.ITEM_ACTION);
|
||||||
|
break;
|
||||||
|
case FLEE:
|
||||||
|
TurnBasedMinecraftMod.getHandler().sendToServer(new PacketBattleDecision(
|
||||||
|
TurnBasedMinecraftMod.proxy.getLocalBattle().getId(), Battle.Decision.FLEE, 0));
|
||||||
|
setState(MenuState.WAITING);
|
||||||
|
break;
|
||||||
|
case ATTACK_TARGET:
|
||||||
|
if (button instanceof EntitySelectionButton) {
|
||||||
|
TurnBasedMinecraftMod.getHandler()
|
||||||
|
.sendToServer(new PacketBattleDecision(TurnBasedMinecraftMod.proxy.getLocalBattle().getId(),
|
||||||
|
Battle.Decision.ATTACK, ((EntitySelectionButton) button).getID()));
|
||||||
|
setState(MenuState.WAITING);
|
||||||
|
} else {
|
||||||
|
setState(MenuState.MAIN_MENU);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SWITCH_HELD_ITEM:
|
||||||
|
setState(MenuState.SWITCH_ITEM);
|
||||||
|
break;
|
||||||
|
case DECIDE_USE_ITEM:
|
||||||
|
setState(MenuState.USE_ITEM);
|
||||||
|
break;
|
||||||
|
case CANCEL:
|
||||||
|
setState(MenuState.MAIN_MENU);
|
||||||
|
break;
|
||||||
|
case DO_ITEM_SWITCH:
|
||||||
|
if (button instanceof ItemSelectionButton) {
|
||||||
|
TurnBasedMinecraftMod.getHandler()
|
||||||
|
.sendToServer(new PacketBattleDecision(TurnBasedMinecraftMod.proxy.getLocalBattle().getId(),
|
||||||
|
Battle.Decision.SWITCH_ITEM, ((ItemSelectionButton) button).getID()));
|
||||||
|
if (((ItemSelectionButton) button).getID() >= 0 && ((ItemSelectionButton) button).getID() < 9) {
|
||||||
|
Minecraft.getInstance().player.inventory.currentItem = ((ItemSelectionButton) button).getID();
|
||||||
|
}
|
||||||
|
setState(MenuState.WAITING);
|
||||||
|
} else {
|
||||||
|
setState(MenuState.MAIN_MENU);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DO_USE_ITEM:
|
||||||
|
if (button instanceof ItemSelectionButton) {
|
||||||
|
TurnBasedMinecraftMod.getHandler()
|
||||||
|
.sendToServer(new PacketBattleDecision(TurnBasedMinecraftMod.proxy.getLocalBattle().getId(),
|
||||||
|
Battle.Decision.USE_ITEM, ((ItemSelectionButton) button).getID()));
|
||||||
|
setState(MenuState.WAITING);
|
||||||
|
} else {
|
||||||
|
setState(MenuState.MAIN_MENU);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPauseScreen() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean keyPressed(int a, int b, int c) {
|
||||||
|
if (getMinecraft().player.isCreative()) {
|
||||||
|
return super.keyPressed(a, b, c);
|
||||||
|
}
|
||||||
|
return false; // TODO verify return value
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimeRemaining(int remaining) {
|
||||||
|
timeRemaining.set(remaining);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,6 @@ package com.seodisparate.TurnBasedMinecraft.client;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
import javax.sound.midi.MidiSystem;
|
import javax.sound.midi.MidiSystem;
|
||||||
|
@ -186,9 +183,7 @@ public class BattleMusic
|
||||||
if(initialized && next != null)
|
if(initialized && next != null)
|
||||||
{
|
{
|
||||||
logger.debug("play called with file " + next.getName() + " and vol " + volume);
|
logger.debug("play called with file " + next.getName() + " and vol " + volume);
|
||||||
Minecraft.getMinecraft().addScheduledTask(() -> {
|
Minecraft.getInstance().getSoundHandler().pause();
|
||||||
Minecraft.getMinecraft().getSoundHandler().pauseSounds();
|
|
||||||
});
|
|
||||||
String suffix = next.getName().substring(next.getName().length() - 3).toLowerCase();
|
String suffix = next.getName().substring(next.getName().length() - 3).toLowerCase();
|
||||||
if(suffix.equals("mid"))
|
if(suffix.equals("mid"))
|
||||||
{
|
{
|
||||||
|
@ -305,7 +300,7 @@ public class BattleMusic
|
||||||
}
|
}
|
||||||
if(resumeMCSounds)
|
if(resumeMCSounds)
|
||||||
{
|
{
|
||||||
Minecraft.getMinecraft().addScheduledTask(() -> Minecraft.getMinecraft().getSoundHandler().resumeSounds() );
|
Minecraft.getInstance().getSoundHandler().resume();
|
||||||
}
|
}
|
||||||
isPlaying = false;
|
isPlaying = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,12 +3,12 @@ package com.seodisparate.TurnBasedMinecraft.client;
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.Battle;
|
import com.seodisparate.TurnBasedMinecraft.common.Battle;
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.CommonProxy;
|
import com.seodisparate.TurnBasedMinecraft.common.CommonProxy;
|
||||||
|
|
||||||
|
import net.minecraft.client.GameSettings;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.settings.GameSettings;
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.util.SoundCategory;
|
import net.minecraft.util.SoundCategory;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.StringTextComponent;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
|
|
||||||
public class ClientProxy extends CommonProxy
|
public class ClientProxy extends CommonProxy
|
||||||
|
@ -44,13 +44,11 @@ public class ClientProxy extends CommonProxy
|
||||||
@Override
|
@Override
|
||||||
public void setBattleGuiAsGui()
|
public void setBattleGuiAsGui()
|
||||||
{
|
{
|
||||||
Minecraft.getMinecraft().addScheduledTask(() -> {
|
if(Minecraft.getInstance().currentScreen != battleGui)
|
||||||
if(Minecraft.getMinecraft().currentScreen != battleGui)
|
{
|
||||||
{
|
battleGui.turnEnd();
|
||||||
battleGui.turnEnd();
|
Minecraft.getInstance().displayGuiScreen(battleGui);
|
||||||
Minecraft.getMinecraft().displayGuiScreen(battleGui);
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -75,10 +73,7 @@ public class ClientProxy extends CommonProxy
|
||||||
public void battleEnded()
|
public void battleEnded()
|
||||||
{
|
{
|
||||||
localBattle = null;
|
localBattle = null;
|
||||||
Minecraft.getMinecraft().addScheduledTask(() -> {
|
Minecraft.getInstance().displayGuiScreen(null);
|
||||||
Minecraft.getMinecraft().displayGuiScreen(null);
|
|
||||||
Minecraft.getMinecraft().setIngameFocus();
|
|
||||||
});
|
|
||||||
stopMusic(true);
|
stopMusic(true);
|
||||||
battleMusicCount = 0;
|
battleMusicCount = 0;
|
||||||
sillyMusicCount = 0;
|
sillyMusicCount = 0;
|
||||||
|
@ -93,14 +88,14 @@ public class ClientProxy extends CommonProxy
|
||||||
@Override
|
@Override
|
||||||
public void playBattleMusic()
|
public void playBattleMusic()
|
||||||
{
|
{
|
||||||
GameSettings gs = Minecraft.getMinecraft().gameSettings;
|
GameSettings gs = Minecraft.getInstance().gameSettings;
|
||||||
battleMusic.playBattle(gs.getSoundLevel(SoundCategory.MUSIC) * gs.getSoundLevel(SoundCategory.MASTER));
|
battleMusic.playBattle(gs.getSoundLevel(SoundCategory.MUSIC) * gs.getSoundLevel(SoundCategory.MASTER));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void playSillyMusic()
|
public void playSillyMusic()
|
||||||
{
|
{
|
||||||
GameSettings gs = Minecraft.getMinecraft().gameSettings;
|
GameSettings gs = Minecraft.getInstance().gameSettings;
|
||||||
battleMusic.playSilly(gs.getSoundLevel(SoundCategory.MUSIC) * gs.getSoundLevel(SoundCategory.MASTER));
|
battleMusic.playSilly(gs.getSoundLevel(SoundCategory.MUSIC) * gs.getSoundLevel(SoundCategory.MASTER));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,24 +155,24 @@ public class ClientProxy extends CommonProxy
|
||||||
@Override
|
@Override
|
||||||
public void displayString(String message)
|
public void displayString(String message)
|
||||||
{
|
{
|
||||||
ITextComponent prefix = new TextComponentString("TBM: ");
|
ITextComponent prefix = new StringTextComponent("TBM: ");
|
||||||
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
|
prefix.getStyle().setColor(TextFormatting.GREEN).setBold(true);
|
||||||
ITextComponent text = new TextComponentString(message);
|
ITextComponent text = new StringTextComponent(message);
|
||||||
prefix.appendSibling(text);
|
prefix.appendSibling(text);
|
||||||
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
|
text.getStyle().setColor(TextFormatting.WHITE).setBold(false);
|
||||||
Minecraft.getMinecraft().player.sendMessage(prefix);
|
Minecraft.getInstance().player.sendMessage(prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void displayTextComponent(ITextComponent text)
|
public void displayTextComponent(ITextComponent text)
|
||||||
{
|
{
|
||||||
Minecraft.getMinecraft().player.sendMessage(text);
|
Minecraft.getInstance().player.sendMessage(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Entity getEntityByID(int id)
|
public Entity getEntityByID(int id)
|
||||||
{
|
{
|
||||||
return Minecraft.getMinecraft().world.getEntityByID(id);
|
return Minecraft.getInstance().world.getEntityByID(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkBattleTypes()
|
private void checkBattleTypes()
|
||||||
|
|
|
@ -1,92 +1,77 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.client;
|
package com.seodisparate.TurnBasedMinecraft.client;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.widget.button.Button;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
|
||||||
public class EntitySelectionButton extends GuiButton
|
public class EntitySelectionButton extends Button
|
||||||
{
|
{
|
||||||
public int entityID;
|
private int entityID;
|
||||||
private boolean isSideA;
|
private boolean isSideA;
|
||||||
public EntitySelectionButton(int buttonId, int x, int y, String buttonText, int entityID, boolean isSideA)
|
|
||||||
{
|
public EntitySelectionButton(int x, int y, int widthIn, int heightIn, String buttonText, int entityID, boolean isSideA, Button.IPressable onPress) {
|
||||||
super(buttonId, x, y, buttonText);
|
super(x, y, widthIn, heightIn, buttonText, onPress);
|
||||||
this.entityID = entityID;
|
this.entityID = entityID;
|
||||||
this.isSideA = isSideA;
|
this.isSideA = isSideA;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntitySelectionButton(int buttonId, int x, int y, int widthIn, int heightIn, String buttonText, int entityID, boolean isSideA)
|
public int getID() {
|
||||||
{
|
return entityID;
|
||||||
super(buttonId, x, y, widthIn, heightIn, buttonText);
|
}
|
||||||
this.entityID = entityID;
|
|
||||||
this.isSideA = isSideA;
|
public boolean getIsSideA() {
|
||||||
|
return isSideA;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawButton(Minecraft mc, int mouseX, int mouseY, float partialTicks)
|
public void render(int mouseX, int mouseY, float partialTicks) {
|
||||||
{
|
super.render(mouseX, mouseY, partialTicks);
|
||||||
super.drawButton(mc, mouseX, mouseY, partialTicks);
|
Entity e = Minecraft.getInstance().world.getEntityByID(entityID);
|
||||||
Entity e = Minecraft.getMinecraft().world.getEntityByID(entityID);
|
if(e != null && e instanceof LivingEntity && ((LivingEntity)e).isAlive()) {
|
||||||
if(e != null && e instanceof EntityLivingBase && ((EntityLivingBase)e).isEntityAlive())
|
int health = (int)(((LivingEntity)e).getHealth() + 0.5f);
|
||||||
{
|
|
||||||
int health = (int)(((EntityLivingBase)e).getHealth() + 0.5f);
|
|
||||||
int xpos = x;
|
int xpos = x;
|
||||||
int xoffset;
|
int xoffset;
|
||||||
if(isSideA)
|
if(isSideA) {
|
||||||
{
|
|
||||||
xpos += width + 4;
|
xpos += width + 4;
|
||||||
xoffset = 4;
|
xoffset = 4;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
xpos -= 6;
|
xpos -= 6;
|
||||||
xoffset = -4;
|
xoffset = -4;
|
||||||
}
|
}
|
||||||
if(health > 200)
|
if(health > 200) {
|
||||||
{
|
fill(xpos, y + height * 4 / 5, xpos + 2, y + height , 0xFFFF0000);
|
||||||
drawRect(xpos, y + height * 4 / 5, xpos + 2, y + height , 0xFFFF0000);
|
fill(xpos, y + height * 3 / 5, xpos + 2, y + height * 4 / 5, 0xFFFFFF00);
|
||||||
drawRect(xpos, y + height * 3 / 5, xpos + 2, y + height * 4 / 5, 0xFFFFFF00);
|
fill(xpos, y + height * 2 / 5, xpos + 2, y + height * 3 / 5, 0xFF00FF00);
|
||||||
drawRect(xpos, y + height * 2 / 5, xpos + 2, y + height * 3 / 5, 0xFF00FF00);
|
fill(xpos, y + height / 5, xpos + 2, y + height * 2 / 5, 0xFF00FFFF);
|
||||||
drawRect(xpos, y + height / 5, xpos + 2, y + height * 2 / 5, 0xFF00FFFF);
|
fill(xpos, y , xpos + 2, y + height / 5, 0xFF0000FF);
|
||||||
drawRect(xpos, y , xpos + 2, y + height / 5, 0xFF0000FF);
|
|
||||||
int healthHeight = ((health - 200) * height / 100);
|
int healthHeight = ((health - 200) * height / 100);
|
||||||
drawRect(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFFFFFFFF);
|
fill(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFFFFFFFF);
|
||||||
}
|
} else if(health > 100) {
|
||||||
else if(health > 100)
|
fill(xpos, y + height * 4 / 5, xpos + 2, y + height , 0xFFFF0000);
|
||||||
{
|
fill(xpos, y + height * 3 / 5, xpos + 2, y + height * 4 / 5, 0xFFFFFF00);
|
||||||
drawRect(xpos, y + height * 4 / 5, xpos + 2, y + height , 0xFFFF0000);
|
fill(xpos, y + height * 2 / 5, xpos + 2, y + height * 3 / 5, 0xFF00FF00);
|
||||||
drawRect(xpos, y + height * 3 / 5, xpos + 2, y + height * 4 / 5, 0xFFFFFF00);
|
fill(xpos, y + height / 5, xpos + 2, y + height * 2 / 5, 0xFF00FFFF);
|
||||||
drawRect(xpos, y + height * 2 / 5, xpos + 2, y + height * 3 / 5, 0xFF00FF00);
|
|
||||||
drawRect(xpos, y + height / 5, xpos + 2, y + height * 2 / 5, 0xFF00FFFF);
|
|
||||||
int healthHeight = ((health - 100) * height / 100);
|
int healthHeight = ((health - 100) * height / 100);
|
||||||
drawRect(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFF0000FF);
|
fill(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFF0000FF);
|
||||||
}
|
} else if(health > 50) {
|
||||||
else if(health > 50)
|
fill(xpos, y + height * 4 / 5, xpos + 2, y + height , 0xFFFF0000);
|
||||||
{
|
fill(xpos, y + height * 3 / 5, xpos + 2, y + height * 4 / 5, 0xFFFFFF00);
|
||||||
drawRect(xpos, y + height * 4 / 5, xpos + 2, y + height , 0xFFFF0000);
|
fill(xpos, y + height * 2 / 5, xpos + 2, y + height * 3 / 5, 0xFF00FF00);
|
||||||
drawRect(xpos, y + height * 3 / 5, xpos + 2, y + height * 4 / 5, 0xFFFFFF00);
|
|
||||||
drawRect(xpos, y + height * 2 / 5, xpos + 2, y + height * 3 / 5, 0xFF00FF00);
|
|
||||||
int healthHeight = ((health - 50) * height / 50);
|
int healthHeight = ((health - 50) * height / 50);
|
||||||
drawRect(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFF00FFFF);
|
fill(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFF00FFFF);
|
||||||
}
|
} else if(health > 20) {
|
||||||
else if(health > 20)
|
fill(xpos, y + height * 4 / 5, xpos + 2, y + height , 0xFFFF0000);
|
||||||
{
|
fill(xpos, y + height * 3 / 5, xpos + 2, y + height * 4 / 5, 0xFFFFFF00);
|
||||||
drawRect(xpos, y + height * 4 / 5, xpos + 2, y + height , 0xFFFF0000);
|
|
||||||
drawRect(xpos, y + height * 3 / 5, xpos + 2, y + height * 4 / 5, 0xFFFFFF00);
|
|
||||||
int healthHeight = ((health - 20) * height / 30);
|
int healthHeight = ((health - 20) * height / 30);
|
||||||
drawRect(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFF00FF00);
|
fill(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFF00FF00);
|
||||||
}
|
} else if(health > 10) {
|
||||||
else if(health > 10)
|
fill(xpos, y + height * 4 / 5, xpos + 2, y + height, 0xFFFF0000);
|
||||||
{
|
|
||||||
drawRect(xpos, y + height * 4 / 5, xpos + 2, y + height, 0xFFFF0000);
|
|
||||||
int healthHeight = ((health - 10) * height / 10);
|
int healthHeight = ((health - 10) * height / 10);
|
||||||
drawRect(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFFFFFF00);
|
fill(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFFFFFF00);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
int healthHeight = (health * height / 10);
|
int healthHeight = (health * height / 10);
|
||||||
drawRect(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFFFF0000);
|
fill(xpos + xoffset, y + height - healthHeight, xpos + xoffset + 2, y + height, 0xFFFF0000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,37 +1,28 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.client;
|
package com.seodisparate.TurnBasedMinecraft.client;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.gui.widget.button.Button;
|
||||||
import net.minecraft.client.gui.GuiButton;
|
|
||||||
|
|
||||||
public class ItemSelectionButton extends GuiButton
|
public class ItemSelectionButton extends Button
|
||||||
{
|
{
|
||||||
int itemStackID;
|
private int itemStackID;
|
||||||
|
|
||||||
public ItemSelectionButton(int buttonId, int x, int y, int widthIn, int heightIn, String buttonText, int itemStackID)
|
public ItemSelectionButton(int x, int y, int widthIn, int heightIn, String buttonText, int itemStackID, Button.IPressable onPress) {
|
||||||
{
|
super(x, y, widthIn, heightIn, buttonText, onPress);
|
||||||
super(buttonId, x, y, widthIn, heightIn, buttonText);
|
|
||||||
this.itemStackID = itemStackID;
|
this.itemStackID = itemStackID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemSelectionButton(int buttonId, int x, int y, String buttonText, int itemStackID)
|
public int getID() {
|
||||||
{
|
return itemStackID;
|
||||||
super(buttonId, x, y, buttonText);
|
|
||||||
this.itemStackID = itemStackID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawButton(Minecraft mc, int mouseX, int mouseY, float partialTicks)
|
public void render(int mouseX, int mouseY, float partialTicks) {
|
||||||
{
|
if(visible) {
|
||||||
if(visible)
|
boolean hovered = mouseX >= x && mouseY >= y && mouseX < x + width && mouseY < y + height;
|
||||||
{
|
if(hovered) {
|
||||||
hovered = mouseX >= x && mouseY >= y && mouseX < x + width && mouseY < y + height;
|
fill(x, y, x + width, y + height, 0x80FFFFFF);
|
||||||
if(hovered)
|
} else {
|
||||||
{
|
fill(x, y, x + width, y + height, 0x20707070);
|
||||||
drawRect(x, y, x + width, y + height, 0x80FFFFFF);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
drawRect(x, y, x + width, y + height, 0x20707070);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,11 @@ import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleMessage
|
||||||
|
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketEditingMessage;
|
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketEditingMessage;
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketGeneralMessage;
|
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketGeneralMessage;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
||||||
import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent;
|
import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.network.NetworkDirection;
|
||||||
|
|
||||||
public class AttackEventHandler
|
public class AttackEventHandler
|
||||||
{
|
{
|
||||||
|
@ -77,21 +78,31 @@ public class AttackEventHandler
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
if(editingInfo.isEditingCustomName)
|
if(editingInfo.isEditingCustomName)
|
||||||
{
|
{
|
||||||
if(event.getEntity().getCustomNameTag().isEmpty())
|
if(!event.getEntity().hasCustomName())
|
||||||
{
|
{
|
||||||
TurnBasedMinecraftMod.logger.error("Cannot edit custom name from entity without custom name");
|
TurnBasedMinecraftMod.logger.error("Cannot edit custom name from entity without custom name");
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Cannot edit custom name from entity without custom name"), (EntityPlayerMP) editingInfo.editor);
|
TurnBasedMinecraftMod.getHandler().sendTo(
|
||||||
|
new PacketGeneralMessage("Cannot edit custom name from entity without custom name"),
|
||||||
|
((ServerPlayerEntity)editingInfo.editor).connection.netManager,
|
||||||
|
NetworkDirection.PLAY_TO_CLIENT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
editingInfo.entityInfo = config.getCustomEntityInfo(event.getEntity().getCustomNameTag());
|
//editingInfo.entityInfo = config.getCustomEntityInfo(event.getEntity().getCustomNameTag());
|
||||||
|
editingInfo.entityInfo = config.getCustomEntityInfo(event.getEntity().getCustomName().getString());
|
||||||
if(editingInfo.entityInfo == null)
|
if(editingInfo.entityInfo == null)
|
||||||
{
|
{
|
||||||
editingInfo.entityInfo = new EntityInfo();
|
editingInfo.entityInfo = new EntityInfo();
|
||||||
editingInfo.entityInfo.customName = event.getEntity().getCustomNameTag();
|
editingInfo.entityInfo.customName = event.getEntity().getCustomName().getString();
|
||||||
}
|
}
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Editing custom name \"" + event.getEntity().getCustomNameTag() + "\""), (EntityPlayerMP) editingInfo.editor);
|
TurnBasedMinecraftMod.getHandler().sendTo(
|
||||||
TurnBasedMinecraftMod.logger.info("Begin editing custom \"" + event.getEntity().getCustomNameTag() + "\"");
|
new PacketGeneralMessage("Editing custom name \"" + event.getEntity().getCustomName().getString() + "\""),
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP) editingInfo.editor);
|
((ServerPlayerEntity)editingInfo.editor).connection.netManager,
|
||||||
|
NetworkDirection.PLAY_TO_CLIENT);
|
||||||
|
TurnBasedMinecraftMod.logger.info("Begin editing custom \"" + event.getEntity().getCustomName().getString() + "\"");
|
||||||
|
TurnBasedMinecraftMod.getHandler().sendTo(
|
||||||
|
new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo),
|
||||||
|
((ServerPlayerEntity)editingInfo.editor).connection.netManager,
|
||||||
|
NetworkDirection.PLAY_TO_CLIENT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -105,9 +116,15 @@ public class AttackEventHandler
|
||||||
{
|
{
|
||||||
editingInfo.entityInfo = editingInfo.entityInfo.clone();
|
editingInfo.entityInfo = editingInfo.entityInfo.clone();
|
||||||
}
|
}
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketGeneralMessage("Editing entity \"" + editingInfo.entityInfo.classType.getName() + "\""), (EntityPlayerMP) editingInfo.editor);
|
TurnBasedMinecraftMod.getHandler().sendTo(
|
||||||
|
new PacketGeneralMessage("Editing entity \"" + editingInfo.entityInfo.classType.getName() + "\""),
|
||||||
|
((ServerPlayerEntity)editingInfo.editor).connection.netManager,
|
||||||
|
NetworkDirection.PLAY_TO_CLIENT);
|
||||||
TurnBasedMinecraftMod.logger.info("Begin editing \"" + editingInfo.entityInfo.classType.getName() + "\"");
|
TurnBasedMinecraftMod.logger.info("Begin editing \"" + editingInfo.entityInfo.classType.getName() + "\"");
|
||||||
TurnBasedMinecraftMod.NWINSTANCE.sendTo(new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo), (EntityPlayerMP) editingInfo.editor);
|
TurnBasedMinecraftMod.getHandler().sendTo(
|
||||||
|
new PacketEditingMessage(PacketEditingMessage.Type.PICK_EDIT, editingInfo.entityInfo),
|
||||||
|
((ServerPlayerEntity)editingInfo.editor).connection.netManager,
|
||||||
|
NetworkDirection.PLAY_TO_CLIENT);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,11 @@ package com.seodisparate.TurnBasedMinecraft.common;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
|
|
||||||
|
@ -152,7 +153,7 @@ public class CommonProxy
|
||||||
return editingPlayers.get(id);
|
return editingPlayers.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final EditingInfo setEditingPlayer(EntityPlayer player)
|
protected final EditingInfo setEditingPlayer(PlayerEntity player)
|
||||||
{
|
{
|
||||||
return editingPlayers.put(player.getEntityId(), new EditingInfo(player));
|
return editingPlayers.put(player.getEntityId(), new EditingInfo(player));
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,10 +1,10 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common;
|
package com.seodisparate.TurnBasedMinecraft.common;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
public class EditingInfo
|
public class EditingInfo
|
||||||
{
|
{
|
||||||
public EntityPlayer editor;
|
public PlayerEntity editor;
|
||||||
public EntityInfo entityInfo;
|
public EntityInfo entityInfo;
|
||||||
public boolean isPendingEntitySelection;
|
public boolean isPendingEntitySelection;
|
||||||
public boolean isEditingCustomName;
|
public boolean isEditingCustomName;
|
||||||
|
@ -17,7 +17,7 @@ public class EditingInfo
|
||||||
isEditingCustomName = false;
|
isEditingCustomName = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditingInfo(EntityPlayer player)
|
public EditingInfo(PlayerEntity player)
|
||||||
{
|
{
|
||||||
editor = player;
|
editor = player;
|
||||||
entityInfo = null;
|
entityInfo = null;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common;
|
package com.seodisparate.TurnBasedMinecraft.common;
|
||||||
|
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.init.MobEffects;
|
import net.minecraft.potion.EffectInstance;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.Effects;
|
||||||
|
|
||||||
public class EntityInfo
|
public class EntityInfo
|
||||||
{
|
{
|
||||||
|
@ -43,120 +43,84 @@ public class EntityInfo
|
||||||
WEAKNESS,
|
WEAKNESS,
|
||||||
POISON,
|
POISON,
|
||||||
WITHER,
|
WITHER,
|
||||||
|
HEALTH_BOOST,
|
||||||
ABSORPTION,
|
ABSORPTION,
|
||||||
SATURATION,
|
SATURATION,
|
||||||
GLOWING,
|
GLOWING,
|
||||||
LEVITATION,
|
LEVITATION,
|
||||||
LUCK,
|
LUCK,
|
||||||
UNLUCK,
|
UNLUCK,
|
||||||
|
SLOW_FALLING,
|
||||||
|
CONDUIT_POWER,
|
||||||
|
DOLPHINS_GRACE,
|
||||||
|
BAD_OMEN,
|
||||||
FIRE,
|
FIRE,
|
||||||
UNKNOWN;
|
UNKNOWN;
|
||||||
|
|
||||||
public static Effect fromString(String c)
|
public static Effect fromString(String c)
|
||||||
{
|
{
|
||||||
c = c.toLowerCase();
|
c = c.toLowerCase();
|
||||||
if(c.equals("speed"))
|
if(c.equals("speed")) {
|
||||||
{
|
|
||||||
return SPEED;
|
return SPEED;
|
||||||
}
|
} else if(c.equals("slow")) {
|
||||||
else if(c.equals("slow"))
|
|
||||||
{
|
|
||||||
return SLOW;
|
return SLOW;
|
||||||
}
|
} else if(c.equals("haste")) {
|
||||||
else if(c.equals("haste"))
|
|
||||||
{
|
|
||||||
return HASTE;
|
return HASTE;
|
||||||
}
|
} else if(c.equals("mining_fatigue") || c.equals("fatigue")) {
|
||||||
else if(c.equals("mining_fatigue") || c.equals("fatigue"))
|
|
||||||
{
|
|
||||||
return MINING_FATIGUE;
|
return MINING_FATIGUE;
|
||||||
}
|
} else if(c.equals("strength")) {
|
||||||
else if(c.equals("strength"))
|
|
||||||
{
|
|
||||||
return STRENGTH;
|
return STRENGTH;
|
||||||
}
|
} else if(c.equals("jump_boost")) {
|
||||||
else if(c.equals("jump_boost"))
|
|
||||||
{
|
|
||||||
return JUMP_BOOST;
|
return JUMP_BOOST;
|
||||||
}
|
} else if(c.equals("nausea")) {
|
||||||
else if(c.equals("nausea"))
|
|
||||||
{
|
|
||||||
return NAUSEA;
|
return NAUSEA;
|
||||||
}
|
} else if(c.equals("regeneration")) {
|
||||||
else if(c.equals("regeneration"))
|
|
||||||
{
|
|
||||||
return REGENERATION;
|
return REGENERATION;
|
||||||
}
|
} else if(c.equals("resistance")) {
|
||||||
else if(c.equals("resistance"))
|
|
||||||
{
|
|
||||||
return RESISTANCE;
|
return RESISTANCE;
|
||||||
}
|
} else if(c.equals("fire_resistance")) {
|
||||||
else if(c.equals("fire_resistance"))
|
|
||||||
{
|
|
||||||
return FIRE_RESISTANCE;
|
return FIRE_RESISTANCE;
|
||||||
}
|
} else if(c.equals("water_breathing")) {
|
||||||
else if(c.equals("water_breathing"))
|
|
||||||
{
|
|
||||||
return WATER_BREATHING;
|
return WATER_BREATHING;
|
||||||
}
|
} else if(c.equals("invisibility")) {
|
||||||
else if(c.equals("invisibility"))
|
|
||||||
{
|
|
||||||
return INVISIBILITY;
|
return INVISIBILITY;
|
||||||
}
|
} else if(c.equals("blindness") || c.equals("blind")) {
|
||||||
else if(c.equals("blindness") || c.equals("blind"))
|
|
||||||
{
|
|
||||||
return BLINDNESS;
|
return BLINDNESS;
|
||||||
}
|
} else if(c.equals("night_vision")) {
|
||||||
else if(c.equals("night_vision"))
|
|
||||||
{
|
|
||||||
return NIGHT_VISION;
|
return NIGHT_VISION;
|
||||||
}
|
} else if(c.equals("hunger")) {
|
||||||
else if(c.equals("hunger"))
|
|
||||||
{
|
|
||||||
return HUNGER;
|
return HUNGER;
|
||||||
}
|
} else if(c.equals("weakness")) {
|
||||||
else if(c.equals("weakness"))
|
|
||||||
{
|
|
||||||
return WEAKNESS;
|
return WEAKNESS;
|
||||||
}
|
} else if(c.equals("poison")) {
|
||||||
else if(c.equals("poison"))
|
|
||||||
{
|
|
||||||
return POISON;
|
return POISON;
|
||||||
}
|
} else if(c.equals("wither")) {
|
||||||
else if(c.equals("wither"))
|
|
||||||
{
|
|
||||||
return WITHER;
|
return WITHER;
|
||||||
}
|
} else if(c.equals("health_boost")) {
|
||||||
else if(c.equals("absorption"))
|
return HEALTH_BOOST;
|
||||||
{
|
} else if(c.equals("absorption")) {
|
||||||
return ABSORPTION;
|
return ABSORPTION;
|
||||||
}
|
} else if(c.equals("saturation")) {
|
||||||
else if(c.equals("saturation"))
|
|
||||||
{
|
|
||||||
return SATURATION;
|
return SATURATION;
|
||||||
}
|
} else if(c.equals("glowing")) {
|
||||||
else if(c.equals("glowing"))
|
|
||||||
{
|
|
||||||
return GLOWING;
|
return GLOWING;
|
||||||
}
|
} else if(c.equals("levitation")) {
|
||||||
else if(c.equals("levitation"))
|
|
||||||
{
|
|
||||||
return LEVITATION;
|
return LEVITATION;
|
||||||
}
|
} else if(c.equals("luck")) {
|
||||||
else if(c.equals("luck"))
|
|
||||||
{
|
|
||||||
return LUCK;
|
return LUCK;
|
||||||
}
|
} else if(c.equals("unluck")) {
|
||||||
else if(c.equals("unluck"))
|
|
||||||
{
|
|
||||||
return UNLUCK;
|
return UNLUCK;
|
||||||
}
|
} else if(c.equals("slow_falling")) {
|
||||||
else if(c.equals("fire"))
|
return SLOW_FALLING;
|
||||||
{
|
} else if(c.equals("conduit_power")) {
|
||||||
|
return CONDUIT_POWER;
|
||||||
|
} else if(c.equals("dolphins_grace")) {
|
||||||
|
return DOLPHINS_GRACE;
|
||||||
|
} else if(c.equals("bad_omen")) {
|
||||||
|
return BAD_OMEN;
|
||||||
|
} else if(c.equals("fire")) {
|
||||||
return FIRE;
|
return FIRE;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
return UNKNOWN;
|
return UNKNOWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -201,6 +165,8 @@ public class EntityInfo
|
||||||
return "poison";
|
return "poison";
|
||||||
case WITHER:
|
case WITHER:
|
||||||
return "wither";
|
return "wither";
|
||||||
|
case HEALTH_BOOST:
|
||||||
|
return "health_boost";
|
||||||
case ABSORPTION:
|
case ABSORPTION:
|
||||||
return "absorption";
|
return "absorption";
|
||||||
case SATURATION:
|
case SATURATION:
|
||||||
|
@ -213,6 +179,14 @@ public class EntityInfo
|
||||||
return "luck";
|
return "luck";
|
||||||
case UNLUCK:
|
case UNLUCK:
|
||||||
return "unluck";
|
return "unluck";
|
||||||
|
case SLOW_FALLING:
|
||||||
|
return "slow_falling";
|
||||||
|
case CONDUIT_POWER:
|
||||||
|
return "conduit_power";
|
||||||
|
case DOLPHINS_GRACE:
|
||||||
|
return "dolphins_grace";
|
||||||
|
case BAD_OMEN:
|
||||||
|
return "bad_omen";
|
||||||
case FIRE:
|
case FIRE:
|
||||||
return "fire";
|
return "fire";
|
||||||
default:
|
default:
|
||||||
|
@ -220,63 +194,71 @@ public class EntityInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public PotionEffect getPotionEffect()
|
public EffectInstance getPotionEffect()
|
||||||
{
|
{
|
||||||
return getPotionEffect(20 * 7, 0);
|
return getPotionEffect(20 * 7, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PotionEffect getPotionEffect(int duration, int amplifier)
|
public EffectInstance getPotionEffect(int duration, int amplifier) {
|
||||||
{
|
switch(this) {
|
||||||
switch(this)
|
|
||||||
{
|
|
||||||
case SPEED:
|
case SPEED:
|
||||||
return new PotionEffect(MobEffects.SPEED, duration, amplifier);
|
return new EffectInstance(Effects.SPEED, duration, amplifier);
|
||||||
case SLOW:
|
case SLOW:
|
||||||
return new PotionEffect(MobEffects.SLOWNESS, duration, amplifier);
|
return new EffectInstance(Effects.SLOWNESS, duration, amplifier);
|
||||||
case HASTE:
|
case HASTE:
|
||||||
return new PotionEffect(MobEffects.HASTE, duration, amplifier);
|
return new EffectInstance(Effects.HASTE, duration, amplifier);
|
||||||
case MINING_FATIGUE:
|
case MINING_FATIGUE:
|
||||||
return new PotionEffect(MobEffects.MINING_FATIGUE, duration, amplifier);
|
return new EffectInstance(Effects.MINING_FATIGUE, duration, amplifier);
|
||||||
case STRENGTH:
|
case STRENGTH:
|
||||||
return new PotionEffect(MobEffects.STRENGTH, duration, amplifier);
|
return new EffectInstance(Effects.STRENGTH, duration, amplifier);
|
||||||
case JUMP_BOOST:
|
case JUMP_BOOST:
|
||||||
return new PotionEffect(MobEffects.JUMP_BOOST, duration, amplifier);
|
return new EffectInstance(Effects.JUMP_BOOST, duration, amplifier);
|
||||||
case NAUSEA:
|
case NAUSEA:
|
||||||
return new PotionEffect(MobEffects.NAUSEA, duration, amplifier);
|
return new EffectInstance(Effects.NAUSEA, duration, amplifier);
|
||||||
case REGENERATION:
|
case REGENERATION:
|
||||||
return new PotionEffect(MobEffects.REGENERATION, duration, amplifier);
|
return new EffectInstance(Effects.REGENERATION, duration, amplifier);
|
||||||
case RESISTANCE:
|
case RESISTANCE:
|
||||||
return new PotionEffect(MobEffects.RESISTANCE, duration, amplifier);
|
return new EffectInstance(Effects.RESISTANCE, duration, amplifier);
|
||||||
case FIRE_RESISTANCE:
|
case FIRE_RESISTANCE:
|
||||||
return new PotionEffect(MobEffects.FIRE_RESISTANCE, duration, amplifier);
|
return new EffectInstance(Effects.FIRE_RESISTANCE, duration, amplifier);
|
||||||
case WATER_BREATHING:
|
case WATER_BREATHING:
|
||||||
return new PotionEffect(MobEffects.WATER_BREATHING, duration, amplifier);
|
return new EffectInstance(Effects.WATER_BREATHING, duration, amplifier);
|
||||||
case INVISIBILITY:
|
case INVISIBILITY:
|
||||||
return new PotionEffect(MobEffects.INVISIBILITY, duration, amplifier);
|
return new EffectInstance(Effects.INVISIBILITY, duration, amplifier);
|
||||||
case BLINDNESS:
|
case BLINDNESS:
|
||||||
return new PotionEffect(MobEffects.BLINDNESS, duration, amplifier);
|
return new EffectInstance(Effects.BLINDNESS, duration, amplifier);
|
||||||
case NIGHT_VISION:
|
case NIGHT_VISION:
|
||||||
return new PotionEffect(MobEffects.NIGHT_VISION, duration, amplifier);
|
return new EffectInstance(Effects.NIGHT_VISION, duration, amplifier);
|
||||||
case HUNGER:
|
case HUNGER:
|
||||||
return new PotionEffect(MobEffects.HUNGER, duration, amplifier);
|
return new EffectInstance(Effects.HUNGER, duration, amplifier);
|
||||||
case WEAKNESS:
|
case WEAKNESS:
|
||||||
return new PotionEffect(MobEffects.WEAKNESS, duration, amplifier);
|
return new EffectInstance(Effects.WEAKNESS, duration, amplifier);
|
||||||
case POISON:
|
case POISON:
|
||||||
return new PotionEffect(MobEffects.POISON, duration, amplifier);
|
return new EffectInstance(Effects.POISON, duration, amplifier);
|
||||||
case WITHER:
|
case WITHER:
|
||||||
return new PotionEffect(MobEffects.WITHER, duration, amplifier);
|
return new EffectInstance(Effects.WITHER, duration, amplifier);
|
||||||
|
case HEALTH_BOOST:
|
||||||
|
return new EffectInstance(Effects.HEALTH_BOOST, duration, amplifier);
|
||||||
case ABSORPTION:
|
case ABSORPTION:
|
||||||
return new PotionEffect(MobEffects.ABSORPTION, duration, amplifier);
|
return new EffectInstance(Effects.ABSORPTION, duration, amplifier);
|
||||||
case SATURATION:
|
case SATURATION:
|
||||||
return new PotionEffect(MobEffects.SATURATION, duration, amplifier);
|
return new EffectInstance(Effects.SATURATION, duration, amplifier);
|
||||||
case GLOWING:
|
case GLOWING:
|
||||||
return new PotionEffect(MobEffects.GLOWING, duration, amplifier);
|
return new EffectInstance(Effects.GLOWING, duration, amplifier);
|
||||||
case LEVITATION:
|
case LEVITATION:
|
||||||
return new PotionEffect(MobEffects.LEVITATION, duration, amplifier);
|
return new EffectInstance(Effects.LEVITATION, duration, amplifier);
|
||||||
case LUCK:
|
case LUCK:
|
||||||
return new PotionEffect(MobEffects.LUCK, duration, amplifier);
|
return new EffectInstance(Effects.LUCK, duration, amplifier);
|
||||||
case UNLUCK:
|
case UNLUCK:
|
||||||
return new PotionEffect(MobEffects.UNLUCK, duration, amplifier);
|
return new EffectInstance(Effects.UNLUCK, duration, amplifier);
|
||||||
|
case SLOW_FALLING:
|
||||||
|
return new EffectInstance(Effects.SLOW_FALLING, duration, amplifier);
|
||||||
|
case CONDUIT_POWER:
|
||||||
|
return new EffectInstance(Effects.CONDUIT_POWER, duration, amplifier);
|
||||||
|
case DOLPHINS_GRACE:
|
||||||
|
return new EffectInstance(Effects.DOLPHINS_GRACE, duration, amplifier);
|
||||||
|
case BAD_OMEN:
|
||||||
|
return new EffectInstance(Effects.BAD_OMEN, duration, amplifier);
|
||||||
case FIRE:
|
case FIRE:
|
||||||
// FIRE is not a PotionEffect and must be applied directly to the Entity
|
// FIRE is not a PotionEffect and must be applied directly to the Entity
|
||||||
return null;
|
return null;
|
||||||
|
@ -285,12 +267,12 @@ public class EntityInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyEffectToEntity(EntityLivingBase entity)
|
public void applyEffectToEntity(LivingEntity entity)
|
||||||
{
|
{
|
||||||
applyEffectToEntity(entity, 20 * 12, 0);
|
applyEffectToEntity(entity, 20 * 12, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyEffectToEntity(EntityLivingBase entity, int duration, int amplifier)
|
public void applyEffectToEntity(LivingEntity entity, int duration, int amplifier)
|
||||||
{
|
{
|
||||||
if(this == FIRE)
|
if(this == FIRE)
|
||||||
{
|
{
|
||||||
|
@ -343,6 +325,8 @@ public class EntityInfo
|
||||||
return "poisoned";
|
return "poisoned";
|
||||||
case WITHER:
|
case WITHER:
|
||||||
return "withered";
|
return "withered";
|
||||||
|
case HEALTH_BOOST:
|
||||||
|
return "given more health";
|
||||||
case ABSORPTION:
|
case ABSORPTION:
|
||||||
return "given absorption";
|
return "given absorption";
|
||||||
case SATURATION:
|
case SATURATION:
|
||||||
|
@ -355,6 +339,12 @@ public class EntityInfo
|
||||||
return "given luck";
|
return "given luck";
|
||||||
case UNLUCK:
|
case UNLUCK:
|
||||||
return "made unlucky";
|
return "made unlucky";
|
||||||
|
case SLOW_FALLING:
|
||||||
|
return "falls slower";
|
||||||
|
case CONDUIT_POWER:
|
||||||
|
return "made able to live underwater";
|
||||||
|
case BAD_OMEN:
|
||||||
|
return "feels a bad omen";
|
||||||
case FIRE:
|
case FIRE:
|
||||||
return "set on fire";
|
return "set on fire";
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common;
|
package com.seodisparate.TurnBasedMinecraft.common;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
|
||||||
public class PlayerJoinEventHandler
|
public class PlayerJoinEventHandler
|
||||||
{
|
{
|
||||||
|
@ -13,7 +13,7 @@ public class PlayerJoinEventHandler
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(event.getEntity() instanceof EntityPlayer && TurnBasedMinecraftMod.proxy.getConfig().getBattleDisabledForAll())
|
if(event.getEntity() instanceof PlayerEntity && TurnBasedMinecraftMod.proxy.getConfig().getBattleDisabledForAll())
|
||||||
{
|
{
|
||||||
TurnBasedMinecraftMod.proxy.getConfig().addBattleIgnoringPlayer(event.getEntity().getEntityId());
|
TurnBasedMinecraftMod.proxy.getConfig().addBattleIgnoringPlayer(event.getEntity().getEntityId());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,99 +1,122 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common;
|
package com.seodisparate.TurnBasedMinecraft.common;
|
||||||
|
|
||||||
|
import com.seodisparate.TurnBasedMinecraft.client.ClientProxy;
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.networking.*;
|
import com.seodisparate.TurnBasedMinecraft.common.networking.*;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLDedicatedServerSetupEvent;
|
||||||
|
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
|
||||||
|
import net.minecraftforge.fml.event.server.FMLServerStoppingEvent;
|
||||||
|
import net.minecraftforge.fml.network.NetworkRegistry;
|
||||||
|
import net.minecraftforge.fml.network.simple.SimpleChannel;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
@Mod(value = TurnBasedMinecraftMod.MODID)
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
import net.minecraftforge.fml.common.Mod.EventHandler;
|
|
||||||
import net.minecraftforge.fml.common.SidedProxy;
|
|
||||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
|
||||||
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
|
||||||
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
|
|
||||||
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
|
|
||||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
|
||||||
|
|
||||||
@Mod(modid = TurnBasedMinecraftMod.MODID, name = TurnBasedMinecraftMod.NAME, version = TurnBasedMinecraftMod.VERSION)
|
|
||||||
public class TurnBasedMinecraftMod
|
public class TurnBasedMinecraftMod
|
||||||
{
|
{
|
||||||
public static final String MODID = "com.seodisparate.turnbasedminecraft";
|
public static final String MODID = "com.seodisparate.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.8";
|
public static final String VERSION = "1.8";
|
||||||
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 CONFIG_DIRECTORY = "config/TurnBasedMinecraft/";
|
public static final String CONFIG_DIRECTORY = "config/TurnBasedMinecraft/";
|
||||||
public static final String CONFIG_FILE_PATH = CONFIG_DIRECTORY + CONFIG_FILENAME;
|
public static final String CONFIG_FILE_PATH = CONFIG_DIRECTORY + CONFIG_FILENAME;
|
||||||
|
public static final String DEFAULT_CONFIG_FILE_PATH = CONFIG_DIRECTORY + DEFAULT_CONFIG_FILENAME;
|
||||||
public static final String CONFIG_INTERNAL_PATH = "/assets/TurnBasedMinecraft/" + CONFIG_FILENAME;
|
public static final String CONFIG_INTERNAL_PATH = "/assets/TurnBasedMinecraft/" + CONFIG_FILENAME;
|
||||||
public static final String MUSIC_ROOT = CONFIG_DIRECTORY + "Music/";
|
public static final String MUSIC_ROOT = CONFIG_DIRECTORY + "Music/";
|
||||||
public static final String MUSIC_SILLY = MUSIC_ROOT + "silly/";
|
public static final String MUSIC_SILLY = MUSIC_ROOT + "silly/";
|
||||||
public static final String MUSIC_BATTLE = MUSIC_ROOT + "battle/";
|
public static final String MUSIC_BATTLE = MUSIC_ROOT + "battle/";
|
||||||
|
|
||||||
public static final SimpleNetworkWrapper NWINSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel("seodisparate.tbmc");
|
private static final String PROTOCOL_VERSION = Integer.toString(1);
|
||||||
protected static Logger logger;
|
private static final ResourceLocation HANDLER_ID = new ResourceLocation(MODID, "main_channel");
|
||||||
private static int packetHandlerID = 0;
|
private static final SimpleChannel HANDLER = NetworkRegistry.ChannelBuilder
|
||||||
|
.named(HANDLER_ID)
|
||||||
|
.clientAcceptedVersions(PROTOCOL_VERSION::equals)
|
||||||
|
.serverAcceptedVersions(PROTOCOL_VERSION::equals)
|
||||||
|
.networkProtocolVersion(() -> PROTOCOL_VERSION)
|
||||||
|
.simpleChannel();
|
||||||
|
protected static Logger logger = LogManager.getLogger();
|
||||||
|
|
||||||
|
public static ResourceLocation getNetResourceLocation() {
|
||||||
|
return HANDLER_ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SimpleChannel getHandler() {
|
||||||
|
return HANDLER;
|
||||||
|
}
|
||||||
|
|
||||||
@SidedProxy(modId=MODID, serverSide="com.seodisparate.TurnBasedMinecraft.common.CommonProxy", clientSide="com.seodisparate.TurnBasedMinecraft.client.ClientProxy")
|
|
||||||
public static CommonProxy proxy;
|
public static CommonProxy proxy;
|
||||||
|
|
||||||
@EventHandler
|
@SubscribeEvent
|
||||||
public void preInit(FMLPreInitializationEvent event)
|
public void firstInit(FMLCommonSetupEvent event)
|
||||||
{
|
|
||||||
logger = event.getModLog();
|
|
||||||
proxy.setLogger(logger);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void init(FMLInitializationEvent event)
|
|
||||||
{
|
{
|
||||||
|
proxy = DistExecutor.runForDist(()->()->new ClientProxy(), ()->()->new CommonProxy());
|
||||||
proxy.initialize();
|
proxy.initialize();
|
||||||
|
proxy.setLogger(logger);
|
||||||
|
|
||||||
// register packets
|
// register packets
|
||||||
NWINSTANCE.registerMessage(
|
int packetHandlerID = 0;
|
||||||
PacketBattleInfo.HandlerBattleInfo.class,
|
HANDLER.registerMessage(
|
||||||
PacketBattleInfo.class,
|
packetHandlerID++,
|
||||||
packetHandlerID++,
|
PacketBattleInfo.class,
|
||||||
Side.CLIENT);
|
PacketBattleInfo::encode,
|
||||||
NWINSTANCE.registerMessage(
|
PacketBattleInfo::decode,
|
||||||
PacketBattleRequestInfo.HandlerBattleRequestInfo.class,
|
PacketBattleInfo.Handler::handle);
|
||||||
PacketBattleRequestInfo.class,
|
HANDLER.registerMessage(
|
||||||
packetHandlerID++,
|
packetHandlerID++,
|
||||||
Side.SERVER);
|
PacketBattleRequestInfo.class,
|
||||||
NWINSTANCE.registerMessage(
|
PacketBattleRequestInfo::encode,
|
||||||
PacketBattleDecision.HandleBattleDecision.class,
|
PacketBattleRequestInfo::decode,
|
||||||
PacketBattleDecision.class,
|
PacketBattleRequestInfo.Handler::handle);
|
||||||
packetHandlerID++,
|
HANDLER.registerMessage(
|
||||||
Side.SERVER);
|
packetHandlerID++,
|
||||||
NWINSTANCE.registerMessage(
|
PacketBattleDecision.class,
|
||||||
PacketBattleMessage.HandlerBattleMessage.class,
|
PacketBattleDecision::encode,
|
||||||
PacketBattleMessage.class,
|
PacketBattleDecision::decode,
|
||||||
packetHandlerID++,
|
PacketBattleDecision.Handler::handle);
|
||||||
Side.CLIENT);
|
HANDLER.registerMessage(
|
||||||
NWINSTANCE.registerMessage(
|
packetHandlerID++,
|
||||||
PacketGeneralMessage.HandlerGeneralMessage.class,
|
PacketBattleMessage.class,
|
||||||
PacketGeneralMessage.class,
|
PacketBattleMessage::encode,
|
||||||
packetHandlerID++,
|
PacketBattleMessage::decode,
|
||||||
Side.CLIENT);
|
PacketBattleMessage.Handler::handle);
|
||||||
NWINSTANCE.registerMessage(
|
HANDLER.registerMessage(
|
||||||
PacketEditingMessage.HandlerEditingMessage.class,
|
packetHandlerID++,
|
||||||
PacketEditingMessage.class,
|
PacketGeneralMessage.class,
|
||||||
packetHandlerID++,
|
PacketGeneralMessage::encode,
|
||||||
Side.CLIENT
|
PacketGeneralMessage::decode,
|
||||||
);
|
PacketGeneralMessage.Handler::handle);
|
||||||
|
HANDLER.registerMessage(
|
||||||
|
packetHandlerID++,
|
||||||
|
PacketEditingMessage.class,
|
||||||
|
PacketEditingMessage::encode,
|
||||||
|
PacketEditingMessage::decode,
|
||||||
|
PacketEditingMessage.Handler::handle);
|
||||||
|
|
||||||
// register event handler(s)
|
// register event handler(s)
|
||||||
MinecraftForge.EVENT_BUS.register(new AttackEventHandler());
|
MinecraftForge.EVENT_BUS.register(new AttackEventHandler());
|
||||||
MinecraftForge.EVENT_BUS.register(new PlayerJoinEventHandler());
|
MinecraftForge.EVENT_BUS.register(new PlayerJoinEventHandler());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@SubscribeEvent
|
||||||
public void postInit(FMLPostInitializationEvent event)
|
public void secondInitClient(FMLClientSetupEvent event)
|
||||||
{
|
{
|
||||||
proxy.postInit();
|
proxy.postInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@SubscribeEvent
|
||||||
|
public void secondInitServer(FMLDedicatedServerSetupEvent event)
|
||||||
|
{
|
||||||
|
proxy.postInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
public void serverStarting(FMLServerStartingEvent event)
|
public void serverStarting(FMLServerStartingEvent event)
|
||||||
{
|
{
|
||||||
logger.debug("About to initialize BattleManager");
|
logger.debug("About to initialize BattleManager");
|
||||||
|
@ -113,7 +136,7 @@ public class TurnBasedMinecraftMod
|
||||||
event.registerServerCommand(new CommandTBMEdit(proxy.getConfig()));
|
event.registerServerCommand(new CommandTBMEdit(proxy.getConfig()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@SubscribeEvent
|
||||||
public void serverStopping(FMLServerStoppingEvent event)
|
public void serverStopping(FMLServerStoppingEvent event)
|
||||||
{
|
{
|
||||||
logger.debug("About to cleanup BattleManager");
|
logger.debug("About to cleanup BattleManager");
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common;
|
package com.seodisparate.TurnBasedMinecraft.common;
|
||||||
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.ItemArrow;
|
import net.minecraft.item.ArrowItem;
|
||||||
|
|
||||||
public class Utility
|
public class Utility
|
||||||
{
|
{
|
||||||
|
@ -33,11 +33,11 @@ public class Utility
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean doesPlayerHaveArrows(EntityPlayer player)
|
public static boolean doesPlayerHaveArrows(PlayerEntity player)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < player.inventory.getSizeInventory(); ++i)
|
for(int i = 0; i < player.inventory.getSizeInventory(); ++i)
|
||||||
{
|
{
|
||||||
if(player.inventory.getStackInSlot(i).getItem() instanceof ItemArrow)
|
if(player.inventory.getStackInSlot(i).getItem() instanceof ArrowItem)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common.networking;
|
package com.seodisparate.TurnBasedMinecraft.common.networking;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.Battle;
|
import com.seodisparate.TurnBasedMinecraft.common.Battle;
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.Battle.Decision;
|
import com.seodisparate.TurnBasedMinecraft.common.Battle.Decision;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.network.PacketBuffer;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
|
||||||
|
|
||||||
public class PacketBattleDecision implements IMessage
|
public class PacketBattleDecision
|
||||||
{
|
{
|
||||||
private int battleID;
|
private int battleID;
|
||||||
private Battle.Decision decision;
|
private Battle.Decision decision;
|
||||||
|
@ -24,35 +24,28 @@ public class PacketBattleDecision implements IMessage
|
||||||
this.decision = decision;
|
this.decision = decision;
|
||||||
this.targetIDOrItemID = targetIDOrItemID;
|
this.targetIDOrItemID = targetIDOrItemID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static void encode(PacketBattleDecision pkt, PacketBuffer buf) {
|
||||||
public void fromBytes(ByteBuf buf)
|
buf.writeInt(pkt.battleID);
|
||||||
{
|
buf.writeInt(pkt.decision.getValue());
|
||||||
battleID = buf.readInt();
|
buf.writeInt(pkt.targetIDOrItemID);
|
||||||
decision = Decision.valueOf(buf.readInt());
|
|
||||||
targetIDOrItemID = buf.readInt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static PacketBattleDecision decode(PacketBuffer buf) {
|
||||||
public void toBytes(ByteBuf buf)
|
return new PacketBattleDecision(buf.readInt(), Decision.valueOf(buf.readInt()), buf.readInt());
|
||||||
{
|
|
||||||
buf.writeInt(battleID);
|
|
||||||
buf.writeInt(decision.getValue());
|
|
||||||
buf.writeInt(targetIDOrItemID);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class HandleBattleDecision implements IMessageHandler<PacketBattleDecision, IMessage>
|
public static class Handler {
|
||||||
{
|
public static void handle(final PacketBattleDecision pkt, Supplier<NetworkEvent.Context> ctx) {
|
||||||
@Override
|
ctx.get().enqueueWork(() -> {
|
||||||
public IMessage onMessage(PacketBattleDecision message, MessageContext ctx)
|
Battle b = TurnBasedMinecraftMod.proxy.getBattleManager().getBattleByID(pkt.battleID);
|
||||||
{
|
if(b != null)
|
||||||
Battle b = TurnBasedMinecraftMod.proxy.getBattleManager().getBattleByID(message.battleID);
|
{
|
||||||
if(b != null)
|
ServerPlayerEntity player = ctx.get().getSender();
|
||||||
{
|
b.setDecision(player.getEntityId(), pkt.decision, pkt.targetIDOrItemID);
|
||||||
EntityPlayerMP player = ctx.getServerHandler().player;
|
}
|
||||||
b.setDecision(player.getEntityId(), message.decision, message.targetIDOrItemID);
|
});
|
||||||
}
|
ctx.get().setPacketHandled(true);
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,17 +2,16 @@ package com.seodisparate.TurnBasedMinecraft.common.networking;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
import net.minecraft.network.PacketBuffer;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
|
||||||
|
|
||||||
public class PacketBattleInfo implements IMessage
|
public class PacketBattleInfo
|
||||||
{
|
{
|
||||||
private Collection<Integer> sideA;
|
private Collection<Integer> sideA;
|
||||||
private Collection<Integer> sideB;
|
private Collection<Integer> sideB;
|
||||||
|
@ -32,67 +31,61 @@ public class PacketBattleInfo implements IMessage
|
||||||
this.decisionNanos = decisionNanos;
|
this.decisionNanos = decisionNanos;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static void encode(PacketBattleInfo pkt, PacketBuffer buf) {
|
||||||
public void fromBytes(ByteBuf buf)
|
buf.writeInt(pkt.sideA.size());
|
||||||
{
|
buf.writeInt(pkt.sideB.size());
|
||||||
int sideACount = buf.readInt();
|
for(Integer id : pkt.sideA) {
|
||||||
int sideBCount = buf.readInt();
|
buf.writeInt(id);
|
||||||
for(int i = 0; i < sideACount; ++i)
|
}
|
||||||
{
|
for(Integer id : pkt.sideB) {
|
||||||
sideA.add(buf.readInt());
|
buf.writeInt(id);
|
||||||
}
|
}
|
||||||
for(int i = 0; i < sideBCount; ++i)
|
buf.writeLong(pkt.decisionNanos);
|
||||||
{
|
|
||||||
sideB.add(buf.readInt());
|
|
||||||
}
|
|
||||||
decisionNanos = buf.readLong();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static PacketBattleInfo decode(PacketBuffer buf) {
|
||||||
public void toBytes(ByteBuf buf)
|
int sideACount = buf.readInt();
|
||||||
{
|
int sideBCount = buf.readInt();
|
||||||
buf.writeInt(sideA.size());
|
Collection<Integer> sideA = new ArrayList<Integer>(sideACount);
|
||||||
buf.writeInt(sideB.size());
|
Collection<Integer> sideB = new ArrayList<Integer>(sideBCount);
|
||||||
for(Integer id : sideA)
|
for(int i = 0; i < sideACount; ++i) {
|
||||||
{
|
sideA.add(buf.readInt());
|
||||||
buf.writeInt(id);
|
}
|
||||||
}
|
for(int i = 0; i < sideBCount; ++i) {
|
||||||
for(Integer id : sideB)
|
sideB.add(buf.readInt());
|
||||||
{
|
}
|
||||||
buf.writeInt(id);
|
long decisionNanos = buf.readLong();
|
||||||
}
|
return new PacketBattleInfo(sideA, sideB, decisionNanos);
|
||||||
buf.writeLong(decisionNanos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class HandlerBattleInfo implements IMessageHandler<PacketBattleInfo, IMessage>
|
public static class Handler {
|
||||||
{
|
public static void handle(final PacketBattleInfo pkt, Supplier<NetworkEvent.Context> ctx) {
|
||||||
@Override
|
ctx.get().enqueueWork(() -> {
|
||||||
public IMessage onMessage(PacketBattleInfo message, MessageContext ctx)
|
if(TurnBasedMinecraftMod.proxy.getLocalBattle() == null)
|
||||||
{
|
|
||||||
if(TurnBasedMinecraftMod.proxy.getLocalBattle() == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
TurnBasedMinecraftMod.proxy.getLocalBattle().clearCombatants();
|
|
||||||
for(Integer id : message.sideA)
|
|
||||||
{
|
|
||||||
Entity e = Minecraft.getMinecraft().world.getEntityByID(id);
|
|
||||||
if(e != null)
|
|
||||||
{
|
{
|
||||||
TurnBasedMinecraftMod.proxy.getLocalBattle().addCombatantToSideA(e);
|
return;
|
||||||
}
|
}
|
||||||
}
|
TurnBasedMinecraftMod.proxy.getLocalBattle().clearCombatants();
|
||||||
for(Integer id : message.sideB)
|
for(Integer id : pkt.sideA)
|
||||||
{
|
|
||||||
Entity e = Minecraft.getMinecraft().world.getEntityByID(id);
|
|
||||||
if(e != null)
|
|
||||||
{
|
{
|
||||||
TurnBasedMinecraftMod.proxy.getLocalBattle().addCombatantToSideB(e);
|
Entity e = Minecraft.getInstance().world.getEntityByID(id);
|
||||||
|
if(e != null)
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.getLocalBattle().addCombatantToSideA(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
for(Integer id : pkt.sideB)
|
||||||
TurnBasedMinecraftMod.proxy.setBattleGuiTime((int)(message.decisionNanos / 1000000000L));
|
{
|
||||||
TurnBasedMinecraftMod.proxy.setBattleGuiBattleChanged();
|
Entity e = Minecraft.getInstance().world.getEntityByID(id);
|
||||||
return null;
|
if(e != null)
|
||||||
}
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.getLocalBattle().addCombatantToSideB(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TurnBasedMinecraftMod.proxy.setBattleGuiTime((int)(pkt.decisionNanos / 1000000000L));
|
||||||
|
TurnBasedMinecraftMod.proxy.setBattleGuiBattleChanged();
|
||||||
|
});
|
||||||
|
ctx.get().setPacketHandled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,19 +2,15 @@ package com.seodisparate.TurnBasedMinecraft.common.networking;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.network.PacketBuffer;
|
||||||
import net.minecraft.scoreboard.ScorePlayerTeam;
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
|
||||||
|
|
||||||
public class PacketBattleMessage implements IMessage
|
public class PacketBattleMessage
|
||||||
{
|
{
|
||||||
public enum MessageType
|
public enum MessageType
|
||||||
{
|
{
|
||||||
|
@ -124,222 +120,175 @@ public class PacketBattleMessage implements IMessage
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
this.custom = custom;
|
this.custom = custom;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static void encode(PacketBattleMessage pkt, PacketBuffer buf) {
|
||||||
public void fromBytes(ByteBuf buf)
|
buf.writeInt(pkt.messageType.getValue());
|
||||||
{
|
buf.writeInt(pkt.entityIDFrom);
|
||||||
messageType = MessageType.valueOf(buf.readInt());
|
buf.writeInt(pkt.entityIDTo);
|
||||||
entityIDFrom = buf.readInt();
|
buf.writeInt(pkt.amount);
|
||||||
entityIDTo = buf.readInt();
|
buf.writeString(pkt.custom);
|
||||||
amount = buf.readInt();
|
|
||||||
custom = ByteBufUtils.readUTF8String(buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static PacketBattleMessage decode(PacketBuffer buf) {
|
||||||
public void toBytes(ByteBuf buf)
|
return new PacketBattleMessage(
|
||||||
{
|
MessageType.valueOf(
|
||||||
buf.writeInt(messageType.getValue());
|
buf.readInt()),
|
||||||
buf.writeInt(entityIDFrom);
|
buf.readInt(),
|
||||||
buf.writeInt(entityIDTo);
|
buf.readInt(),
|
||||||
buf.writeInt(amount);
|
buf.readInt(),
|
||||||
ByteBufUtils.writeUTF8String(buf, custom);
|
buf.readString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class HandlerBattleMessage implements IMessageHandler<PacketBattleMessage, IMessage>
|
public static class Handler {
|
||||||
{
|
public static void handle(final PacketBattleMessage pkt, Supplier<NetworkEvent.Context> ctx) {
|
||||||
@Override
|
ctx.get().enqueueWork(() -> {
|
||||||
public IMessage onMessage(PacketBattleMessage message, MessageContext ctx)
|
Entity fromEntity = TurnBasedMinecraftMod.proxy.getEntityByID(pkt.entityIDFrom);
|
||||||
{
|
String from = "Unknown";
|
||||||
Entity fromEntity = TurnBasedMinecraftMod.proxy.getEntityByID(message.entityIDFrom);
|
|
||||||
String from = "Unknown";
|
|
||||||
if(fromEntity != null)
|
|
||||||
{
|
|
||||||
if(fromEntity.hasCustomName())
|
|
||||||
{
|
|
||||||
from = fromEntity.getCustomNameTag();
|
|
||||||
}
|
|
||||||
else if(fromEntity instanceof EntityPlayer)
|
|
||||||
{
|
|
||||||
from = ScorePlayerTeam.formatPlayerName(fromEntity.getTeam(), fromEntity.getName());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
from = fromEntity.getName();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(TurnBasedMinecraftMod.proxy.getLocalBattle() != null)
|
|
||||||
{
|
|
||||||
fromEntity = TurnBasedMinecraftMod.proxy.getLocalBattle().getCombatantEntity(message.entityIDFrom);
|
|
||||||
if(fromEntity != null)
|
if(fromEntity != null)
|
||||||
{
|
{
|
||||||
if(fromEntity.hasCustomName())
|
from = fromEntity.getDisplayName().getFormattedText();
|
||||||
|
}
|
||||||
|
else if(TurnBasedMinecraftMod.proxy.getLocalBattle() != null)
|
||||||
|
{
|
||||||
|
fromEntity = TurnBasedMinecraftMod.proxy.getLocalBattle().getCombatantEntity(pkt.entityIDFrom);
|
||||||
|
if(fromEntity != null)
|
||||||
{
|
{
|
||||||
from = fromEntity.getCustomNameTag();
|
from = fromEntity.getDisplayName().getFormattedText();
|
||||||
}
|
|
||||||
else if(fromEntity instanceof EntityPlayer)
|
|
||||||
{
|
|
||||||
from = ScorePlayerTeam.formatPlayerName(fromEntity.getTeam(), fromEntity.getName());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
from = fromEntity.getName();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
Entity toEntity = TurnBasedMinecraftMod.proxy.getEntityByID(pkt.entityIDTo);
|
||||||
Entity toEntity = TurnBasedMinecraftMod.proxy.getEntityByID(message.entityIDTo);
|
String to = "Unknown";
|
||||||
String to = "Unknown";
|
|
||||||
if(toEntity != null)
|
|
||||||
{
|
|
||||||
if(toEntity.hasCustomName())
|
|
||||||
{
|
|
||||||
to = toEntity.getCustomNameTag();
|
|
||||||
}
|
|
||||||
else if(toEntity instanceof EntityPlayer)
|
|
||||||
{
|
|
||||||
to = ScorePlayerTeam.formatPlayerName(toEntity.getTeam(), toEntity.getName());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
to = toEntity.getName();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(TurnBasedMinecraftMod.proxy.getLocalBattle() != null)
|
|
||||||
{
|
|
||||||
toEntity = TurnBasedMinecraftMod.proxy.getLocalBattle().getCombatantEntity(message.entityIDTo);
|
|
||||||
if(toEntity != null)
|
if(toEntity != null)
|
||||||
{
|
{
|
||||||
if(toEntity.hasCustomName())
|
to = toEntity.getDisplayName().getFormattedText();
|
||||||
|
}
|
||||||
|
else if(TurnBasedMinecraftMod.proxy.getLocalBattle() != null)
|
||||||
|
{
|
||||||
|
toEntity = TurnBasedMinecraftMod.proxy.getLocalBattle().getCombatantEntity(pkt.entityIDTo);
|
||||||
|
if(toEntity != null)
|
||||||
{
|
{
|
||||||
to = toEntity.getCustomNameTag();
|
to = toEntity.getDisplayName().getFormattedText();
|
||||||
}
|
}
|
||||||
else if(toEntity instanceof EntityPlayer)
|
}
|
||||||
|
|
||||||
|
switch(pkt.messageType)
|
||||||
|
{
|
||||||
|
case ENTERED:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " entered battle!");
|
||||||
|
if(TurnBasedMinecraftMod.proxy.getLocalBattle() == null || TurnBasedMinecraftMod.proxy.getLocalBattle().getId() != pkt.amount)
|
||||||
{
|
{
|
||||||
to = ScorePlayerTeam.formatPlayerName(toEntity.getTeam(), toEntity.getName());
|
TurnBasedMinecraftMod.proxy.createLocalBattle(pkt.amount);
|
||||||
|
}
|
||||||
|
TurnBasedMinecraftMod.proxy.battleStarted();
|
||||||
|
TurnBasedMinecraftMod.proxy.typeEnteredBattle(pkt.custom);
|
||||||
|
break;
|
||||||
|
case FLEE:
|
||||||
|
if(pkt.amount != 0)
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " fled battle!");
|
||||||
|
TurnBasedMinecraftMod.proxy.typeLeftBattle(pkt.custom);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
to = toEntity.getName();
|
TurnBasedMinecraftMod.proxy.displayString(from + " tried to flee battle but failed!");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(message.messageType)
|
|
||||||
{
|
|
||||||
case ENTERED:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " entered battle!");
|
|
||||||
if(TurnBasedMinecraftMod.proxy.getLocalBattle() == null || TurnBasedMinecraftMod.proxy.getLocalBattle().getId() != message.amount)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.createLocalBattle(message.amount);
|
|
||||||
}
|
|
||||||
TurnBasedMinecraftMod.proxy.battleStarted();
|
|
||||||
TurnBasedMinecraftMod.proxy.typeEnteredBattle(message.custom);
|
|
||||||
break;
|
|
||||||
case FLEE:
|
|
||||||
if(message.amount != 0)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " fled battle!");
|
|
||||||
TurnBasedMinecraftMod.proxy.typeLeftBattle(message.custom);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " tried to flee battle but failed!");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DIED:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " died in battle!");
|
|
||||||
TurnBasedMinecraftMod.proxy.typeLeftBattle(message.custom);
|
|
||||||
break;
|
|
||||||
case ENDED:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString("Battle has ended!");
|
|
||||||
TurnBasedMinecraftMod.proxy.battleEnded();
|
|
||||||
break;
|
|
||||||
case ATTACK:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " attacked " + to + " and dealt " + message.amount + " damage!");
|
|
||||||
break;
|
|
||||||
case DEFEND:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " blocked " + to + "'s attack!");
|
|
||||||
break;
|
|
||||||
case DEFENSE_DAMAGE:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " retaliated from " + to + "'s attack and dealt " + message.amount + " damage!");
|
|
||||||
break;
|
|
||||||
case MISS:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " attacked " + to + " but missed!");
|
|
||||||
break;
|
|
||||||
case DEFENDING:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " is defending!");
|
|
||||||
break;
|
|
||||||
case DID_NOTHING:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " did nothing!");
|
|
||||||
break;
|
|
||||||
case USED_ITEM:
|
|
||||||
switch(UsedItemAction.valueOf(message.amount))
|
|
||||||
{
|
|
||||||
case USED_NOTHING:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " tried to use nothing!");
|
|
||||||
break;
|
break;
|
||||||
case USED_INVALID:
|
case DIED:
|
||||||
if(message.custom.length() > 0)
|
TurnBasedMinecraftMod.proxy.displayString(from + " died in battle!");
|
||||||
|
TurnBasedMinecraftMod.proxy.typeLeftBattle(pkt.custom);
|
||||||
|
break;
|
||||||
|
case ENDED:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString("Battle has ended!");
|
||||||
|
TurnBasedMinecraftMod.proxy.battleEnded();
|
||||||
|
break;
|
||||||
|
case ATTACK:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " attacked " + to + " and dealt " + pkt.amount + " damage!");
|
||||||
|
break;
|
||||||
|
case DEFEND:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " blocked " + to + "'s attack!");
|
||||||
|
break;
|
||||||
|
case DEFENSE_DAMAGE:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " retaliated from " + to + "'s attack and dealt " + pkt.amount + " damage!");
|
||||||
|
break;
|
||||||
|
case MISS:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " attacked " + to + " but missed!");
|
||||||
|
break;
|
||||||
|
case DEFENDING:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " is defending!");
|
||||||
|
break;
|
||||||
|
case DID_NOTHING:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " did nothing!");
|
||||||
|
break;
|
||||||
|
case USED_ITEM:
|
||||||
|
switch(UsedItemAction.valueOf(pkt.amount))
|
||||||
{
|
{
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " tried to consume " + message.custom + " and failed!");
|
case USED_NOTHING:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " tried to use nothing!");
|
||||||
|
break;
|
||||||
|
case USED_INVALID:
|
||||||
|
if(pkt.custom.length() > 0)
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " tried to consume " + pkt.custom + " and failed!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " tried to consume an invalid item and failed!");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case USED_FOOD:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " ate a " + pkt.custom + "!");
|
||||||
|
break;
|
||||||
|
case USED_POTION:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " drank a " + pkt.custom + "!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TURN_BEGIN:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString("The turn begins!");
|
||||||
|
TurnBasedMinecraftMod.proxy.battleGuiTurnBegin();
|
||||||
|
break;
|
||||||
|
case TURN_END:
|
||||||
|
if(TurnBasedMinecraftMod.proxy.getLocalBattle() != null)
|
||||||
|
{
|
||||||
|
if(pkt.amount == 0)
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString("The turn ended!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString("The turn ended (abnormally due to internal error)!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TurnBasedMinecraftMod.proxy.battleGuiTurnEnd();
|
||||||
|
break;
|
||||||
|
case SWITCHED_ITEM:
|
||||||
|
if(pkt.amount != 0)
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " switched to a different item!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " tried to consume an invalid item and failed!");
|
TurnBasedMinecraftMod.proxy.displayString(from + " switched to a different item but failed because it was invalid!");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USED_FOOD:
|
case WAS_AFFECTED:
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " ate a " + message.custom + "!");
|
TurnBasedMinecraftMod.proxy.displayString(to + " was " + pkt.custom + " by " + from + "!");
|
||||||
break;
|
break;
|
||||||
case USED_POTION:
|
case BECAME_CREATIVE:
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " drank a " + message.custom + "!");
|
TurnBasedMinecraftMod.proxy.displayString(from + " entered creative mode and left battle!");
|
||||||
|
break;
|
||||||
|
case FIRED_ARROW:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " let loose an arrow towards " + to + "!");
|
||||||
|
break;
|
||||||
|
case ARROW_HIT:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(to + " was hit by " + from + "'s arrow!");
|
||||||
|
break;
|
||||||
|
case BOW_NO_AMMO:
|
||||||
|
TurnBasedMinecraftMod.proxy.displayString(from + " tried to use their bow but ran out of ammo!");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
});
|
||||||
case TURN_BEGIN:
|
ctx.get().setPacketHandled(true);
|
||||||
TurnBasedMinecraftMod.proxy.displayString("The turn begins!");
|
}
|
||||||
TurnBasedMinecraftMod.proxy.battleGuiTurnBegin();
|
|
||||||
break;
|
|
||||||
case TURN_END:
|
|
||||||
if(TurnBasedMinecraftMod.proxy.getLocalBattle() != null)
|
|
||||||
{
|
|
||||||
if(message.amount == 0)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString("The turn ended!");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString("The turn ended (abnormally due to internal error)!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
TurnBasedMinecraftMod.proxy.battleGuiTurnEnd();
|
|
||||||
break;
|
|
||||||
case SWITCHED_ITEM:
|
|
||||||
if(message.amount != 0)
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " switched to a different item!");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " switched to a different item but failed because it was invalid!");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WAS_AFFECTED:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(to + " was " + message.custom + " by " + from + "!");
|
|
||||||
break;
|
|
||||||
case BECAME_CREATIVE:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " entered creative mode and left battle!");
|
|
||||||
break;
|
|
||||||
case FIRED_ARROW:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " let loose an arrow towards " + to + "!");
|
|
||||||
break;
|
|
||||||
case ARROW_HIT:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(to + " was hit by " + from + "'s arrow!");
|
|
||||||
break;
|
|
||||||
case BOW_NO_AMMO:
|
|
||||||
TurnBasedMinecraftMod.proxy.displayString(from + " tried to use their bow but ran out of ammo!");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common.networking;
|
package com.seodisparate.TurnBasedMinecraft.common.networking;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.Battle;
|
import com.seodisparate.TurnBasedMinecraft.common.Battle;
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.Unpooled;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
import net.minecraft.network.PacketBuffer;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
|
||||||
|
|
||||||
public class PacketBattleRequestInfo implements IMessage
|
public class PacketBattleRequestInfo
|
||||||
{
|
{
|
||||||
private int battleID;
|
private int battleID;
|
||||||
|
|
||||||
|
@ -19,29 +20,24 @@ public class PacketBattleRequestInfo implements IMessage
|
||||||
this.battleID = battleID;
|
this.battleID = battleID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static void encode(PacketBattleRequestInfo pkt, PacketBuffer buf) {
|
||||||
public void fromBytes(ByteBuf buf)
|
buf.writeInt(pkt.battleID);
|
||||||
{
|
|
||||||
battleID = buf.readInt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static PacketBattleRequestInfo decode(PacketBuffer buf) {
|
||||||
public void toBytes(ByteBuf buf)
|
return new PacketBattleRequestInfo(buf.readInt());
|
||||||
{
|
|
||||||
buf.writeInt(battleID);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class HandlerBattleRequestInfo implements IMessageHandler<PacketBattleRequestInfo, PacketBattleInfo>
|
public static class Handler {
|
||||||
{
|
public static void handle(final PacketBattleRequestInfo pkt, Supplier<NetworkEvent.Context> ctx) {
|
||||||
@Override
|
ctx.get().enqueueWork(() -> {
|
||||||
public PacketBattleInfo onMessage(PacketBattleRequestInfo message, MessageContext ctx)
|
Battle b = TurnBasedMinecraftMod.proxy.getBattleManager().getBattleByID(pkt.battleID);
|
||||||
{
|
if(b == null) {
|
||||||
Battle b = TurnBasedMinecraftMod.proxy.getBattleManager().getBattleByID(message.battleID);
|
return;
|
||||||
if(b == null)
|
}
|
||||||
{
|
TurnBasedMinecraftMod.getHandler().reply(new PacketBattleInfo(b.getSideAIDs(), b.getSideBIDs(), b.getTimerSeconds()), ctx.get());
|
||||||
return null;
|
});
|
||||||
}
|
ctx.get().setPacketHandled(true);
|
||||||
return new PacketBattleInfo(b.getSideAIDs(), b.getSideBIDs(), b.getTimerSeconds());
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,14 +1,13 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common.networking;
|
package com.seodisparate.TurnBasedMinecraft.common.networking;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import net.minecraft.network.PacketBuffer;
|
||||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
|
||||||
|
|
||||||
public class PacketGeneralMessage implements IMessage
|
public class PacketGeneralMessage
|
||||||
{
|
{
|
||||||
String message;
|
String message;
|
||||||
|
|
||||||
|
@ -21,26 +20,21 @@ public class PacketGeneralMessage implements IMessage
|
||||||
{
|
{
|
||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static void encode(PacketGeneralMessage pkt, PacketBuffer buf) {
|
||||||
public void fromBytes(ByteBuf buf)
|
buf.writeString(pkt.message);
|
||||||
{
|
|
||||||
message = ByteBufUtils.readUTF8String(buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static PacketGeneralMessage decode(PacketBuffer buf) {
|
||||||
public void toBytes(ByteBuf buf)
|
return new PacketGeneralMessage(buf.readString());
|
||||||
{
|
|
||||||
ByteBufUtils.writeUTF8String(buf, message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class HandlerGeneralMessage implements IMessageHandler<PacketGeneralMessage, IMessage>
|
public static class Handler {
|
||||||
{
|
public static void handle(final PacketGeneralMessage pkt, Supplier<NetworkEvent.Context> ctx) {
|
||||||
@Override
|
ctx.get().enqueueWork(() -> {
|
||||||
public IMessage onMessage(PacketGeneralMessage message, MessageContext ctx)
|
TurnBasedMinecraftMod.proxy.displayString(pkt.message);
|
||||||
{
|
});
|
||||||
TurnBasedMinecraftMod.proxy.displayString(message.message);
|
ctx.get().setPacketHandled(true);
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
package com.seodisparate.TurnBasedMinecraft.common.networking;
|
|
||||||
|
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
|
||||||
|
|
||||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
|
||||||
|
|
||||||
public class PacketHandler
|
|
||||||
{
|
|
||||||
public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel(TurnBasedMinecraftMod.MODID);
|
|
||||||
}
|
|
|
@ -0,0 +1 @@
|
||||||
|
Maven-Artifact: fr.delthas:javamp3:1.0.3
|
|
@ -1,12 +1,12 @@
|
||||||
# Please do not change this option, the mod uses this to keep track of what new
|
# Please do not change this option, the mod uses this to keep track of what new
|
||||||
# changes to add to the config.
|
# changes to add to the config.
|
||||||
version = 1
|
version = 2
|
||||||
|
|
||||||
[client_config]
|
[client_config]
|
||||||
|
|
||||||
# determines what categories use what type of music.
|
# What categories play this type of music (battle_music). Unknown categories will default to this type.
|
||||||
# Unknown categories sent by the server will default to "battle_music".
|
|
||||||
battle_music = ["monster", "animal", "boss", "player"]
|
battle_music = ["monster", "animal", "boss", "player"]
|
||||||
|
# What categories play this type of music (silly_music).
|
||||||
silly_music = ["passive"]
|
silly_music = ["passive"]
|
||||||
|
|
||||||
# Minimum percentage of silly entities in battle to use silly music.
|
# Minimum percentage of silly entities in battle to use silly music.
|
||||||
|
@ -41,19 +41,23 @@ 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"]
|
||||||
|
|
||||||
# Stats that apply to all players
|
# speed stat of all players in battle
|
||||||
player_speed = 50
|
player_speed = 50
|
||||||
|
# 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
|
||||||
player_slow_speed = 20
|
player_slow_speed = 20
|
||||||
|
# attack probability stat for all players
|
||||||
player_attack_probability = 90
|
player_attack_probability = 90
|
||||||
|
# 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
|
||||||
|
|
||||||
# If speed is greater than fastest speed of entity on opposing side, good
|
# probability of fleeing from battle when speed is greater than fastest enemy's speed
|
||||||
# probability is used.
|
|
||||||
flee_good_probability = 90
|
flee_good_probability = 90
|
||||||
|
# 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,
|
||||||
|
|
Loading…
Reference in a new issue