@@ -164,12 +164,12 @@ func newClient() error {
164164 return err
165165 }
166166
167- language , err := cli .SelectString ("Language:" , []string {"C#" , "Go" , "JavaScript" , "TypeScript" }, []string {"cs" , "go" , "js" , "ts" })
167+ language , err := cli .SelectString ("Language:" , []string {"C#" , "Go" , "Java" , " JavaScript" , "TypeScript" }, []string {"cs" , "go" , "java " , "js" , "ts" })
168168 if err != nil {
169169 return err
170170 }
171171
172- file := cgfile.CodeGameFileData {
172+ file := & cgfile.CodeGameFileData {
173173 Game : info .Name ,
174174 Type : "client" ,
175175 Lang : language ,
@@ -193,6 +193,9 @@ func newClient() error {
193193 case "go" :
194194 newData .LibraryVersion = external .LibraryVersionFromCGVersion ("code-game-project" , "go-client" , info .CGVersion )
195195 err = modules .ExecuteNewClient (newData )
196+ case "java" :
197+ newData .LibraryVersion = external .LibraryVersionFromCGVersion ("code-game-project" , "java-client" , info .CGVersion )
198+ err = modules .ExecuteNewClient (newData )
196199 case "js" , "ts" :
197200 newData .LibraryVersion = external .LibraryVersionFromCGVersion ("code-game-project" , "javascript-client" , info .CGVersion )
198201 err = modules .ExecuteNewClient (newData )
@@ -203,13 +206,30 @@ func newClient() error {
203206 return err
204207 }
205208
206- if language == "cs" || language == "go" || language == "ts" {
209+ file , err = cgfile .LoadCodeGameFile ("" )
210+ if err != nil {
211+ return fmt .Errorf ("Failed to open .codegame.json: %w" , err )
212+ }
213+
214+ if language == "cs" || language == "go" || language == "java" || language == "ts" {
207215 eventsOutput := info .Name
208216 switch language {
209217 case "cs" :
210218 eventsOutput = strings .ReplaceAll (strings .Title (strings .ReplaceAll (strings .ReplaceAll (eventsOutput , "_" , " " ), "-" , " " )), " " , "" )
211219 case "go" :
212220 eventsOutput = strings .ReplaceAll (strings .ReplaceAll (eventsOutput , "-" , "" ), "_" , "" )
221+ case "java" :
222+ packageConf , ok := file .LangConfig ["package" ]
223+ if ! ok {
224+ return errors .New ("Missing language config field `package` in .codegame.json!" )
225+ }
226+ packageName := packageConf .(string )
227+ if packageConf == "" {
228+ return errors .New ("Empty language config field `package` in .codegame.json!" )
229+ }
230+ gameDir := filepath .Join ("src" , "main" , "java" )
231+ pkgDir := filepath .Join (strings .Split (packageName , "." )... )
232+ eventsOutput = filepath .Join (gameDir , pkgDir , strings .ReplaceAll (strings .ReplaceAll (strings .ToLower (eventsOutput ), "_" , "" ), "-" , "" ))
213233 case "ts" :
214234 eventsOutput = filepath .Join ("src" , eventsOutput )
215235 }
0 commit comments