#
#  Parameters:
#
#    MC = Minecraft version number
#

PROJECT := ProspectingMod
BACKUP_VOL := /Volumes/GREGTHUMB5
BACKUP_SUBDIR := ProjectsD/Minecraft/$(PROJECT)
BACKUP_DIR := $(BACKUP_VOL)/$(BACKUP_SUBDIR)

MC := 1.2.5
MODNAME := GregsProspecting
MODVER := 1.3.1
MODPKG := gcewing/prospecting

BACKUP_EXCLUDE := --exclude build --exclude jars --exclude Basement --exclude Test

SRC_INCLUDE := doc Makefile README.html resources src

MCP := mcp-$(MC)
CPATH_CLIENT := $(MCP)/bin/minecraft:$(MCP)/jars/bin/lwjgl.jar
CPATH_SERVER := $(MCP)/bin/minecraft_server
SPATH_COMMON := src/common:src/main
SPATH_CLIENT := src/client:$(SPATH_COMMON)
SPATH_SERVER := $(SPATH_COMMON)
CDEST_CLIENT := build/$(MC)/client
CDEST_SERVER := build/$(MC)/server
RDEST := $(MCP)/bin/minecraft/$(MODPKG)/resources
MODCLASS_CLIENT := mod_$(MODNAME)
MODCLASS_SERVER := mod_$(MODNAME)Server
RELJAR_CLIENT := $(MODNAME)-Client.jar
RELJAR_SERVER := $(MODNAME)-Server.jar
RELZIP := $(MODNAME)-$(MODVER)-mc$(MC).zip
RELSRC := $(MODNAME)-$(MODVER)-mc$(MC)-Source.zip
WEBDIR := web/minecraft/mods/$(MODNAME)

#JFLAGS = -Xlint:deprecation
MCUSER = gcewing

JC := javac $(JFLAGS)

test_client: compile_client install_client run_client

test_server: compile_server install_server run_server

compile_client: $(CDEST_CLIENT)
	rm -rf $(CDEST_CLIENT)/*
	$(JC) -classpath $(CPATH_CLIENT) -sourcepath $(SPATH_CLIENT) -d $(CDEST_CLIENT) \
    `find src/common src/client -name '*.java'` \
    src/main/net/minecraft/src/$(MODNAME).java \
    src/main/net/minecraft/src/$(MODCLASS_CLIENT).java

compile_server: $(CDEST_SERVER)
	rm -rf $(CDEST_SERVER)/*
	$(JC) -classpath $(CPATH_SERVER) -sourcepath $(SPATH_SERVER) -d $(CDEST_SERVER) \
    $(JFLAGS) `find src/common -name '*.java'` \
    src/main/net/minecraft/src/$(MODNAME).java \
    src/main/net/minecraft/src/$(MODCLASS_SERVER).java

install_client:
	rm -rf $(MCP)/bin/minecraft/$(MODPKG) 
	cp -r build/$(MC)/client/* $(MCP)/bin/minecraft
	mkdir -p $(RDEST)
	cp -r resources/* $(RDEST)

install_server:
	rm -rf $(MCP)/bin/minecraft_server/$(MODPKG)
	cp -r build/$(MC)/server/* $(MCP)/bin/minecraft_server

run_client:
	cd $(MCP); ./startclient.sh $(MCUSER)

run_server:
	cd $(MCP); ./startserver.sh

release: reob reljar_client reljar_server relzip relsrc

reob:
	cd $(MCP); ./reobfuscate.sh

reljar_client:
	mkdir -p jars
	jar cf jars/$(RELJAR_CLIENT) \
    -C $(MCP)/reobf/minecraft $(MODCLASS_CLIENT).class \
    -C $(MCP)/reobf/minecraft $(MODNAME).class \
    -C $(MCP)/reobf/minecraft $(MODPKG) \
    -C $(MCP)/bin/minecraft $(MODPKG)/resources

reljar_server:
	mkdir -p jars
	jar cf jars/$(RELJAR_SERVER) \
    -C $(MCP)/reobf/minecraft_server $(MODCLASS_SERVER).class \
    -C $(MCP)/reobf/minecraft_server $(MODNAME).class \
    -C $(MCP)/reobf/minecraft_server $(MODPKG)

relzip:
	rm -f $(RELZIP)
	cd jars; zip -r ../$(RELZIP) $(RELJAR_CLIENT) $(RELJAR_SERVER)
	zip -r $(RELZIP) README.html doc

relsrc:
	rm -f $(RELSRC)
	zip -r $(RELSRC) $(SRC_INCLUDE)

$(CDEST_CLIENT):
	mkdir -p $(CDEST_CLIENT)

$(CDEST_SERVER):
	mkdir -p $(CDEST_SERVER)
	
upload:
	rsync --progress --times $(RELZIP) $(RELSRC) $(COSC):$(WEBDIR)
	ssh $(COSC) 'cd $(WEBDIR); unzip -o $(RELZIP)'

backup: backup_subdir
	DATE=`date +%Y-%m-%d`; \
	TARFILE=$(BACKUP_DIR)/$(PROJECT)-$$DATE.tar.gz; \
	tar zcvf $$TARFILE $(BACKUP_EXCLUDE) *; \
	ls -l $$TARFILE

backup_subdir:
	cd $(BACKUP_VOL); mkdir -p $(BACKUP_SUBDIR)
