Giter VIP home page Giter VIP logo

colorteaming's People

Contributors

ucchyocean avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

colorteaming's Issues

チームが既定のキル数を達成したときに、全体通知するようにして欲しい。

フォーラムに要望があった機能。
どちらかチームのキル数が規定数を超えたときに、全体に通知する機能を追加する。

【追加するコマンド】
/ct trophy 30 - いずれかのチームが30キルを達成したときに、下記メッセージを全体通知する。
  「redチームは、30キル数を達成しました!」
  ただし、/cl コマンドでリーダーが選出されている場合は、本機能は自動で無効になる。
/ct trophy off または /ct trophy 0 - キル数達成時の通知機能をオフにする。

【検討】
デス数、ポイント数(キル数-デス数)でも、同様に通知できそうだが、あまり需要がなさそう・・・?
とりあえず今回は見送りとする。

銃プラグインとの相性確認作業

銃プラグインを使った場合、/cff コマンドでFriendlyFireを防ぐことができるのかどうか、確認をしてみる。
確認1)PVPGunPlus : このプラグインは EntityDamageByEntityEvent を発生させているので、たぶんそのままで cff コマンドで防げる
確認2)CrackShot : このプラグインは、独自に実装してしまっているので、多分防ぐことができない。

ct reachTrophy (amount) コマンドの追加

フォーラムに要望があった機能。

【コマンド】
/ct reachTrophy (amount) - キル数がamountに達すると、
  「redチームが、○キルまでもう少しです!」というメッセージを送信する。
  (amount) は、killTrophy より小さくないと、エラーになる。
  また、killTrophy が設定されていない場合も、エラーになる。
  /ct reachTrophy 0 または /ct reachTrophy off で、本機能をオフにする。

【設定】
killReachTrophy: 0
コマンドの設定値と同様。コマンド実行時に、config.yml にも反映する。

autoColorRemove設定を、死亡時設定と、ログアウト時設定に、分割する

従来の仕様では、autoColorRemove設定をオンにすると、死亡時も、ログアウト時も、チームを離脱する。
仕様です(キリッ)で通していたが、フォーラムでも質問があり、混乱を招いている。
死亡時設定と、ログアウト時設定に分割して、それぞれ独立して設定できるようにしたい。

設定)
colorRemoveOnDeath: 死亡時にグループから離脱
colorRemoveOnQuit: ログアウト時にグループから離脱
従来の autoColorRemove が指定されている場合、colorRemoveOnDeathが指定されているものとみなす。

コマンド)
/colorremove on|off - 死亡時およびログアウト時のチーム離脱オンオフ(従来どおり)
/colorremove death on|off - 死亡時のチーム離脱オンオフ
/colorremove quit on|off - ログアウト時のチーム離脱オンオフ

cspawnコマンドで指定したグループのリスポーンポイントが保存されない

現在の仕様では、cspawnコマンドを実行したときに、対象グループのユーザー全員に対して、setBedRespawnPointを実行しているだけである。
しかし、これではrcでグループが変更されたときに、毎回 リスポンポイントを新しいグループで再設定しなければならず、誤解を招く上、面倒である。
cspawnはグループのリスポーンポイントをconfig.ymlなどに保存し、そのグループのメンバープレイヤー死亡時に、リスポーンポイントを再設定する必要がある。
なお、検証時にEssentialsとの優先度がどのようになるかを確認する必要がある。

config.yml の中につづりミスがある

仲間同士の攻撃無効化:
誤)firelyFireDisabler
正)friendlyFireDisabler

なんで今までずっと気付かなかったんでしょうか・・・
全部修正しましょう。

チームチャットのかな文字変換対応

チームチャットのかな文字に反応して、ローマ字をかな文字に変換して、表示する。
オンオフはconfig.yml からのみ指定可能で、オンオフをゲーム内から行うコマンドは提供しない。

【例-変換オフ】
[red] koreha tyanto henkan dekimasuka? dekimasita!

【例-変換オン】
[red] koreha tyanto henkan dekimasuka? dekimasita!(これは ちゃんと へんかん できますか? できました!)

【設定】
通常のチャットをかな文字変換化する。
showJapanizeGlobalChat: false
チームチャットをかな文字変換化する。
showJapanizeTeamChat: true

【サンプル】
https://dl.dropboxusercontent.com/u/34781847/2013-04-23_00.51.09.png

colorRemoveOnQuitがfalseなら、大将プレイヤーであっても、ログアウトで敗北しないようにしてほしい。

フォーラムにリクエストがあった件。

ログアウト時のチーム離脱を無効に設定、死亡時のチーム離脱を有効に設定した時に、リーダー設定をしている場合にリーダーがログアウトした際従来通り○○チームの大将、○○は逃げ出した!と表示されてしまうのですが、大将も安心してリログできるように変えられないでしょうか・・・

ポイントを登録して、登録したポイントに転送するコマンドを追加する。

ctpコマンドに、ポイントを登録する機能と、登録したポイントへ転送する機能を追加する。

【既存のコマンド】
/ctp (group) (world) (x) (y) (z) - groupのメンバー全員を、(world):(x),(y),(z) の場所に
                     テレポートします。 worldは省略可能。
/ctp (group) here - groupのメンバー全員を、コマンドを実行した人の場所にテレポートします。
/ctp (group) spawn - groupのメンバー全員を、グループのリスポーンポイントに
               テレポートします。

【新しく追加するコマンド】
/ctp all spawn - 全プレイヤーを、各groupのリスポーンポイントにテレポートします。
           ignoreGroupsに所属しているプレイヤーはテレポートしません。
           また、リスポーンポイントが登録されていないgroupも
           テレポートしません。
/ctp set (point) (world) (x) (y) (z) - (world):(x),(y),(z) の場所を、point という名前の
                       ポイントで登録します。worldは省略可能。
/ctp set (point) here - コマンドを実行した人の場所を、point という名前のポイントで
               登録します。
/ctp remove (point) - pointという名前のポイント登録を削除します。
/ctp (group) (point) - groupのメンバー全員を、point という名前のポイントへテレポートします。
/ctp all (point) - pointという名前のポイントへ、全プレイヤーをテレポートします。
           ただし、ignoreGroups のプレイヤーはテレポートしません。
/ctp list - 登録されたポイントをリスト表示します。

【その他の仕様】
登録したポイントは、「plugins/ColorMeTeaming/tppoint.yml」というファイルで管理する。
コンフィグリロードの対象としない(直接ファイルへ書き込んだり、読み込んだりする)。

前回分けたチームを、再度同じチームに振り分けしたい。

【要望、やりたいこと】
前回分けたチームを、再度同じチームに振り分けしたい。

【追加するコマンド】
/rc rest - 色が設定されていない人を、現在設定されているグループにランダム割り振りする。
  ただし、人数が少ないチームへの割り振りを優先する。
  また、色設定が無い人だけでなく、Whiteの人も割り振り対象とする。
/csave [(filename)] - 現在の割り振り内容、チームのキルデス数、個人のキルデス数を、name に保存する
  name を省略した場合、 /plugins/ColorMeTeaming/saves/lastdata.yml へ保存する。
/crestore [(filename)] - filename から、チームメンバー、キルデス数をリストアする
  name を省略した場合、 /plugins/ColorMeTeaming/saves/lastdata.yml からリストアする。

【その他の仕様】
/rc コマンド実行時に、自動的に /plugins/ColorMeTeaming/saves/lastdata.yml で保存する。
これは、/csave lastdata を実行した場合と同等。
/crestore lastdata で、直前のチーム分けを復元することができるようになる。
大将設定は保存しない。

/rc コマンド(/colorrandomコマンド)の実行時に、config.yml の world で指定されているワールドに居るユーザーのみを対象に変更する

従来は、/rc コマンド(/colorrandomコマンド)の実行時に、ignoreGroupsを除く全てのプレイヤーをチーム分け対象としていたが、config.yml の world で指定されているワールドに居るユーザーのみを対象に変更する。
いわゆる、“生活鯖”といわれるタイプのサーバーで、プラグインを導入するケースに対応するため。
ワールドを分割してイベントをしたい場合、イベントに参加していない人をチーム分けに巻き込まないようにする必要がある。

cspawnコマンドで指定したグループのリスポーンポイントの適用を、仕様変更する

今は、各プレイヤーが死亡した瞬間(PlayerDeathEvent)に、ベッドリスポーン場所を各グループのリスポーン場所で上書き設定している。
しかしそれだと、グループ抜けた後もそのプレイヤーのリスポーン場所が残ってしまう、という問題がある。

今後は、死んだときのイベントを取得するのではなく、リスポーンするイベント(PlayerRespawnEvent)を取得して、そのプレイヤーのベッドリスポーン場所を変更せずに、グループのリスポーン場所へ飛ばすようにする。

仕様変更後は、
・/ct remove、/ct removeAll コマンドで、リスポーン場所の初期化設定を行っているが、この部分は削除する。
・EssentialsSpawnとは、イベント設定の優先度を確認しておく必要がある。

cclass コマンドのコンフィグ形式に、革装備の色を指定できるようにして欲しい。

フォーラムにご意見があった件。
cclassコマンドで、色づけした革装備を配布できるようにして欲しい。

【config.yml の classes: の、従来の記載例】
(アイテムID)^(エンチャントID)-(エンチャントレベル)@(データ値)

【config.yml の classes: の、新仕様案】
(アイテムID)^(エンチャントID)-(エンチャントレベル)@(データ値)$(色値6桁16進数)

【色値6桁16進数】
HTMLとかで指定する、6桁16進数と同じような形式。RGBの順で2桁ずつ指定する。
例)
赤:993333、青:334CB2、黄:E5E533

【classes指定例】
RedLeather:
armor: 298$993333,299$993333,300$993333,301$993333
BlueLeather:
armor: 298$334CB2,299$334CB2,300$334CB2,301$334CB2
YellowLeather:
armor: 298$E5E533,299$E5E533,300$E5E533,301$E5E533
GreenLeather:
armor: 298$667F33,299$667F33,300$667F33,301$667F33

グループを再構成すると、IllegalStateException が発生する

【再現方法】

  1. /rc コマンドで、2チームに振り分けする
  2. /ct remove red コマンドで、red チームのみを解散する。
  3. /cjoin red コマンドで、解散された人たちを再度 red チームに所属させる。
  4. そのまま相手チームを倒したり、/kill したりして、サイドバーのスコアを更新する。
    コンソールに、下記のようなExceptionが発生する。
    java.lang.IllegalStateException: Unregistered scoreboard component

【問題点】
2. 3. のところで、サイドバーコンポーネントを再構成していない。
そのため、古い red チームのオブジェクトに対して、スコア更新を実施しようとし、Exception が発生する。

【対策】
チームの構成が変更される可能性のある、/ct remove や /ct removeAll、/cjoin (group) は、常にサイドバーを再構成するようにする。

マップごとにチームリスポーンポイントを保存できるようにし、コマンドで切換えできるようにする。

【廃止するコマンド】
/cspawn (group) here - 今後は、/cspawn (group) コマンドで代替してもらう。

【追加するコマンド】
/cspawn (group) [MapName] - マップ名MapNameにおける、グループgroupのリスポーンポイントを登録する。マップ名MapNameは省略可能で、省略した場合は MapName="" とみなす。
/cspawn switch [MapName] - リスポーンポイント設定を、マップ名MapNameに切り替えする。マップ名MapNameは省略可能で、省略した場合は MapName="" とみなす。

【備考】
マップ名は、実際にワールドや領域が存在しなくても、任意に指定可能とする。
マップ名に指定できる文字列は、
「string.matches("[a-zA-Z]{1,10}");」(英字10文字以内)を満たすこと。

【respawn.yml の保存形式】
マップ名が空、またはnullである場合は、チーム名のみをキーとする。
マップ名が設定されている場合は、「(チーム名)-(マップ名)」の形式をキーとする。
例1)チーム red、マップ指定なし:「red」がキー
例2)チーム blue、マップ指定 lunasys:「blue-lunasys」がキー

ゲーム終了条件の設定

【終了条件(案)】
キル数達成、大将キル達成、他チーム全滅、設定時間経過
例)50キル達成、10分経過 など
終了条件は、同時に1つしか設定できない。(15キル達成または大将キル達成、のような設定はできない)

【終了時】
指定したゲーム終了条件を満たすと、全員を初期リスポーン地点にTPする。
TP時に死亡している人は、リスポーン時に初期リスポーン地点に移動する。

【制約条件】
下記の制約条件を設定する。
・キル数達成 を設定するには、killTrophy を事前に設定しておく必要がある。
 (killTrophyが、終了条件値になる。)
・他チーム全滅 を設定するには、colorRemoveOnDeath をtrueに設定しておく必要がある。
 (死亡時にチーム離脱しないと、ずっと全滅しないから。)
・設定時間経過 も同様。別途用意するコマンドで、経過時間を設定しておく必要がある。
 (用意するコマンドはTBD)

※その他、気付いたら追記する予定。

DelayedTeleportTaskの実装と設定

DelayedTeleportTask を実装し、多人数のテレポートを遅延付きで実行する。
遅延量はconfig.yml の teleportDelay で設定可能とし、tick単位で指定できる。
デフォルトは 3 tick。1人テレポートするごとに3tick待つ。20人いたら、60tick(=3秒)かかることになる。

cchatのOP表示コマンドがわかりにくい!

現在の、/cchat opCopyOn、/cchat opCopyOff が、すごくわかりにくい!
/cchat opon、/cchat opoff とかじゃダメかい?
→ opon、opoff も追加しよう。一応、既存の opcopyon、opcopyoff もとっとく。

cclass hand コマンドのバグフィックス

cclass hand コマンドの実行結果表示にミスがあり、「耐久消耗度」(Durability)と、「染色」(Color)の順序が逆になっている。
そのため、染色して耐久度を消耗した革装備のIDを cclass hand で調べて、そのIDをconfig.yml に設定すると、cclass コマンド実行時に正規表現のパースエラーで、正しく実行されなくなる。

cspawnコマンドに、remove と list を追加する。

というか、今まで無くて、不便はなかったのだろうか・・・

【既存のコマンド】
/cspawn (group) (world) (x) (y) (z) - group のリスポーンポイントを、(x, y, z) に設定する。
/cspawn (group) here - group のリスポーンポイントを、コマンド実行者の場所に設定する。

【新しく追加するコマンド】
/cspawn remove (group) - group のリスポーンポイントを削除する。
/cspawn remove all - 全てのグループリスポーンポイントを削除する。
/cspawn list - 全てのグループリスポーンポイントをリスト表示する。

Command Signs プラグインに cclass コマンドを登録して実行すると、アイテムが正しく表示されない

フォーラムに報告があった件。
http://forum.minecraftuser.jp/viewtopic.php?f=38&t=9729#p82131

Command Signs というプラグインで、「/cclass <name> Knight」などのように、cclass コマンドを登録して実行すると、アイテムが見えないことがある。
ただし、インベントリを開き、下段の9個のアイテム欄をクリックすると、全て現れる。

Command Sings - http://dev.bukkit.org/server-mods/command-signs/

誰もチームに所属していない状態で、/cjoin green を実行すると、IllegalStateException が発生する。

issue #42 で修正されきっていない例外パターンがあるようだ。
スタックトレースは次のとおり。

17:27:55 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing command 'ct' in plugin ColorTeaming v1.5.5
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
at org.bukkit.craftbukkit.v1_5_R2.CraftServer.dispatchCommand(CraftServer.java:523)
at net.minecraft.server.v1_5_R2.PlayerConnection.handleCommand(PlayerConnection.java:966)
at net.minecraft.server.v1_5_R2.PlayerConnection.chat(PlayerConnection.java:884)
at net.minecraft.server.v1_5_R2.PlayerConnection.a(PlayerConnection.java:841)
at net.minecraft.server.v1_5_R2.Packet3Chat.handle(Packet3Chat.java:44)
at net.minecraft.server.v1_5_R2.NetworkManager.b(NetworkManager.java:292)
at net.minecraft.server.v1_5_R2.PlayerConnection.d(PlayerConnection.java:110)
at net.minecraft.server.v1_5_R2.ServerConnection.b(SourceFile:35)
at net.minecraft.server.v1_5_R2.DedicatedServerConnection.b(SourceFile:30)
at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:580)
at net.minecraft.server.v1_5_R2.DedicatedServer.r(DedicatedServer.java:225)
at net.minecraft.server.v1_5_R2.MinecraftServer.q(MinecraftServer.java:476)
at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:409)
at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.IllegalStateException: Unregistered scoreboard component at org.bukkit.craftbukkit.v1_5_R2.scoreboard.CraftScoreboardComponent.checkState(CraftScoreboardComponent.java:13)
at org.bukkit.craftbukkit.v1_5_R2.scoreboard.CraftObjective.unregister(CraftObjective.java:98)
at com.github.ucchyocean.ct.scoreboard.SidebarScoreDisplay.remove(SidebarScoreDisplay.java:186)
at com.github.ucchyocean.ct.ColorTeaming.removeSidebar(ColorTeaming.java:451)
at com.github.ucchyocean.ct.command.CTeamingCommand.onCommand(CTeamingCommand.java:60)
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
... 15 more

BelowName設定相当の機能を提供する

※やらなきゃいけなかったけど、すっかり忘れてた......
スコアボードの、BelowName相当の機能を提供する。
コマンド仕様は、/ct list とまったく同じにする。

【コマンド仕様】
/ct below (kill|death|health|point|clear)

【実際の表示(案)】
kill : ○kill
https://dl.dropboxusercontent.com/u/34781847/2013-05-04_23.15.10.png
death : ○death
https://dl.dropboxusercontent.com/u/34781847/2013-05-04_23.14.23.png
health : ○ / 20
https://dl.dropboxusercontent.com/u/34781847/2013-05-04_23.15.47.png
point : ○point
https://dl.dropboxusercontent.com/u/34781847/2013-05-04_23.15.17.png

cjoin コマンドの追加

フォーラムに要望があった機能。
一般プレイヤーが、グループへの参加を行うコマンド。

【コマンド 一般プレイヤー用】
コマンドは colorjoin、短縮形は cjoin、
パーミッションノードは colorteaming.join、デフォルトは全プレイヤーとする。

/cjoin - 現在存在するグループ(ignoreGroupsを除く)のうち、人数の少ないグループへ参加する。
    最小の人数のグループが複数ある場合、いずれかがランダムに選択される。
/cjoin random - /cjoin と同様。
/cjoin (color) - 指定のグループへ参加する。

【コマンド 管理者用】
/ct allowJoinAny (on|off) - 一般プレイヤーの「/cjoin (color)」コマンドの使用許可の可否を設定する。
    デフォルトは off とする。
/ct allowJoinRandom (on|off) - 一般プレイヤーの「/cjoin」コマンドの使用許可の可否を設定する。
    デフォルトは on とする。

【設定ファイル】
config.yml に下記の項目を追加する。意味は、/ct allowJoinAny (on|off) 、/ct allowJoinRandom (on|off) と一緒。
allowPlayerJoinAny: false
allowPlayerJoinRandom: true

チームチャットで、2回重複してJapanize変換されることがある

【再現方法】
teamChatMode が true
showJapanizeGlobalChat が true
showJapanizeTeamChat が true
チームに所属している人のチャット発言内容が、Japanize変換後も2バイトコードが含まれない

この条件を満たすと、Japanize変換が2回実行される。

【バグの原因】
chat のリスナーで、グローバルチャット用処理部分が、
チームチャットの場合も通過するケースがあり、
2回重複してJapanize変換処理が実行される。
https://github.com/ucchyocean/ColorTeaming/blob/master/src/main/java/com/github/ucchyocean/ct/listener/PlayerChatListener.java#L44

Japanize変換処理を、if文の中に入れることで、対処可能。

cgiveコマンドの追加

フォーラムに要望があった件
チームメンバーの持ち物を上書きせずに、アイテムをインベントリへ追加する。

【コマンド案】
/cgive (チーム名) (アイテムID) - 指定したアイテムを配布
/cgive (チーム名) hand - 自分が手に持っているアイテムを配布

【副案(ボツ)】
/cgive (チーム名) exp set (数値) - 経験値を指定した値に設定
/cgive (チーム名) exp add (数値) - 経験値を指定した値ぶん追加

cexplodeコマンドの追加

新しいコマンド、cexplodeを追加する。
していされたプレイヤーまたはグループは、爆発して死ぬ。
負けチームの残党処理用。。。というか、爆発オチ用。
爆発はエフェクトのみにして、ワールドを破壊しない

余裕があったら、派生で /cthunder なんてのも考えたい

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.