約 1,066,711 件
https://w.atwiki.jp/ksnarma/pages/24.html
1942ArmAで現在使用されているFull MODです。 目次 Hell in the Pacific MOD (@Pacific)キー設定・操作 起動設定 Invasion 1944 MOD (@I44)起動設定 Hell in the Pacific MOD (@Pacific) 太平洋戦争を扱ったMODです。通称奈落MOD。 現在v0.5ベータ版公開中。 キー設定・操作 MOD特有の操作を行うために以下のキーの設定が必要です。(「操作設定」→「カスタム操作」) Use Action 18 : 近接攻撃キー。マウスサイドボタンに割り当て推奨。 Use Action 19 : 特殊攻撃キー。Hキーに割り当て推奨。 Use Action 20 : 全武装選択キー。Rに割り当て推奨。 代表的なキー操作は以下の通りです。 Ctrl + 近接攻撃 : 銃剣装着可能な銃と銃剣を所持している場合、銃剣装着/取り外し。 特殊攻撃 : 小銃と擲弾発射器を所持している場合、小銃に発射器を装着/取り外し。(銃剣は取り外しておく必要が有る) 特殊攻撃 : 日本軍の破甲爆雷を所持している場合、対象に破甲爆雷をくっつける。 近接攻撃 : 銃に銃剣を装着している場合、刺突攻撃。走りながら押すと銃剣突撃のアニメーションになる。 U : 銃を委託する。 I : ハンドシグナル「進め」。 J : ハンドシグナル「止まれ」。 Shft +J : 手榴弾を用いて自殺攻撃。(日本兵のみ) 全武装選択 : 航空機に乗っている場合、全ての機銃/機関砲を同時発射。 起動設定 以下のアドオン構成でプレイしています。 @cba;@cba_a2;@cba_oa;@kba;@sound;@smk;@pacific Invasion 1944 MOD (@I44) 第二次世界大戦の西部戦線(ノルマンディー上陸以降)を扱ったMODです。通称I44MOD。 現在v2.63正式版公開中。 起動設定 以下のアドオン構成でプレイしています。 @cba;@cba_a2;@cba_oa;@kba;@smk;@I44
https://w.atwiki.jp/3dcustom/pages/34.html
MOD(改造ファイル)を使用する 基本的にarcsフォルダに解凍したTAHファイルをコピーするだけです。 (base.tahのように拡張子がtahのファイルです) ダウンロードしたファイルの拡張子がzip、rar、lzh、7zの場合、対応する解凍ソフトを導入して展開してください。 2重・3重に圧縮されている場合もあります。その場合はそれぞれ対応するツールで解凍が必要になります。 適用したmodが表示されていない場合、再度この項目を読み直して 1から順にきちんと実行していってください。 アップローダにあるファイルの中には、modでは無く改造用の素材(職人向けデータ)もあります。 素材のみアップロードされていた場合は、リドミ等で解説されていると思います。 改造ノウハウの各項を参考にチャレンジしてください。 MODの適用の仕方(全くわからない人向け) 1. 適当なMODを見つけましょう 3DCG mods referenceのデータベースが参考になります。 各所にあるロダや個人サイト、ブログ等でMODは公開されています。丹念に探しましょう。改造専用ろだを参照 ロダのIDやパスワードを聞いたり、このMODはどこにある?この画像のmodはどれ?といった質問はNGです。 聞いてはいけません(答えるのも禁止されています)。自分で解決しましょう。 ※WEBブラウザが日本語最優先になっていないとロダにはアクセスできません。 「俺アクセス規制されている?」と質問する前に自分のブラウザの設定を修正しましょう。 ※個人ブログでMODを公開されている方のURLを公開するのは絶対にやめましょう。 多数のアクセス集中で迷惑をかけてしまうことになりかねません。 どうしても自分のサイト等で公開したい場合、必ずご本人に了解を取り許可を得てからにしましょう。 2. PCにダウンロードしましょう 3Dカスタム少女をインストールしているPCにファイルを保存しましょう。 ダウンロードしたファイルは圧縮されています。そのままでは使えません。 3. ダウンロードしたファイルを展開しましょう 圧縮ファイルはzipやrar形式が多いです。解凍ソフトは「Lhaplus」がお勧めです。 持っていない人は探しましょう。まれに「○○.7z」のように圧縮されている場合があります。 この場合は7-zipで解凍しましょう。 完全に解凍終了すると中にtahファイルとtxtファイル、画像ファイルが大抵入ってます。 拡張子が「tah」のファイルがMOD本体です。 これ以外の拡張子のファイルはmodとしては使えません。注意しましょう。 (他は後で使いますので別に分けてとっておきましょう) 4. 解凍されたファイル内にあるテキストファイル(説明書)をよく読みましょう 利用時の注意点やどこに適用されるか等が書いてあります。 サンプル画像は参考になります。できるだけ見ましょう。 ※modによっては別のmodが無いと表示できなかったりするものがあります。よく読みましょう。 ※特殊なmodの場合、複数あるTahファイルのうち1つだけを選んで入れるものもあります。 こういったMODは同時に入れると不具合が発生します。 ※インストール前に古いバージョンを削除しなければならないものがあります。注意しましょう。 5. TAHファイル(mod本体)を移動させましょう WindowsXPの操作で話します。 「3Dカスタム少女のショートカット」を右クリックし「プロパティ」を選択します。 「プロパティ」内の「リンク先を探す」を選びましょう。 「3Dカスタム少女」のフォルダが開いて、その中に「arcs」というフォルダがあります。 この「arcs」フォルダに先ほどのtahファイルだけを入れましょう。 フォルダごと突っ込んでも認識されません。また拡張子がtah以外のファイルを入れても表示されません。 ※XP(有料パッチの方)適用後はフォルダによるMOD整理が可能になります。update/XPを参照 3Dカスタム少女のインストール先を変更せずにインストールしている場合、 「3Dカスタム少女」のフォルダは「Program Files」フォルダの「TechArts3D」にあります。 マイドキュメントにも「TechArts3D」のフォルダがありますがこの時には関係ないです。 注意しましょう。 ※立体視用にカス子を複数表示させるMODやカス子そのものを見えなくするMODもあります。 片っ端から入れるのは不具合の元です。絶対にやめましょう。 6. 「3Dカスタム少女」を起動させましょう 先ほどのTXTの内容どおりになったら問題ありません。 うまくいってない場合(別のところに表示される、ぜんぜん見えない等々)は どこかでデータが衝突しているかもしれません。 解凍したフォルダ内のテキストファイルをもう一度よく読んでみて 見落としている注意や、やるべきことが無いか以下を確認しましょう。 modファイルの解凍は完全に済んでいますか? → ○○○.tah の形式になっているか確認 古いバージョンの削除が必要な場合、削除を行っていますか? →説明を読んで対処しましょう 表示に必要な別のmod は入っていますか?(※XPではなくSPまでのみ) →必要な別のmodを入手しましょう 解凍したフォルダごとmodを入れていませんか? → tah ファイルだけを入れましょう modファイルを置いたフォルダは arcs フォルダですか? →手順5をもう一度確認しましょう obsidian/DX9 なんたらと出て落ちる、表示されない → パソコン側の問題です。3Dカスタム少女の問題ではありません。ドライバを最新にしたりグラフィックボードを高いものに買い変えるなどの対処を行いましょう。また、XPのr4が当ててあるのに無印XPを起動させようとしたりすると「バージョンが違います」とかそんな感じのエラーが出ます。最新版に更新してみるのもいいかもしれません。 toonshader2入れてるんだけど… → toonshader2にはバージョンがあります。最新版を入れてますか? やるべきことをやっても問題が解決できなかった場合、今入れたTahファイルを 「arcs」フォルダから削除して修正が発表されるのを待ちましょう。 (この時点で先ほどとっておいた分の用事は済みます。とって置くか捨てましょう) modは内部で衝突して起動しない場合があります。ちょっと上級者向けですが PCの知識があるのであればmod衝突チェックツール(TDCGMan)を使ってみるのもいいかもしれません。 またmodを多く入れると古いmodが読み込まれなくなる場合があるようです。 この場合TAHファイルのバージョンを上げることによって読み込まれるようになります。共通パーツの改造を参照 TAHdecGUIを用意し、該当TAHファイルの解凍後バージョンを上げて再梱包を行いましょう。(該当のmodの改造に関する記述の範囲内で行うこと)
https://w.atwiki.jp/stranded2/pages/38.html
日本語MOD 上の方ほど新しいMODです 起動用バッチファイルの作り方はこちら 漢字MOD 文章表示に、1ドットずつ画像を貼り付けていく手法が取られています カタカナ以外の日本語が表示されると、負荷が大きくなるのは仕様 漢字MOD+シングルアイランド&アドベンチャー翻訳データ(20111211) アドベンチャー・エディットを中心に、翻訳とバグ修正をして補完しました。 注意点 フォントファイルと変換後のファイルは、ライセンスがよく分からないので取り扱い注意。 指定するフォントはビットマップフォントを使ってください。 アンチエイリアスがかかると文字が潰れます。 一部コンバートできないファイルが、予め出力フォルダに入っています(翻訳済み)。 これもまとめて上書きして下さい。 漢字MOD+サバイバルガイド&アドベンチャー翻訳MODからの変更点 ●翻訳されていなかった部分をなるべく翻訳 (2chスレ 858さんのエディット翻訳も勝手に使わせて頂きました。お詫びと感謝を申し上げます) ●シングルアイランドの残り3つの島も翻訳 (Tower Defenseで塔をレベル4にアップグレードできないバグ修正) ●アドベンチャーをさらに翻訳。調整と、地味なバグ修正も多数 ●爆発エサと壊れた井戸のバグ修正 ●動物に襲われている時でも平気で寝られるバグ修正 漢字MOD+サバイバルガイド&アドベンチャーの翻訳データ(20110108) 日本語化MOD v002 + テント関連の修正ファイルver.2 を平仮名と漢字が表示できるようにしました。 日本語化MODからの変更点 キーコンフィグを表示キーを修正keys.inf ガーデンのメッセージ修正scripts/butterflygarden.s2s ランダムマップのSpawn修正random_0?_endless_?.inf ランダムキャラとの会話修正scripts/random_char_*.s2s Bush(37)とBerry Bush(46)の当たり判定修正objects_bushes.inf クレジットのウムラウトとエスツェットを代替表記credits.inf 漢字MOD本体のみ 漢字表示可能&UI日本語化 日本語化MOD v002 日本語化MOD v002 (最新版) とりあえず日本語表示ができるものです。 ただし、カタカナのみです。 内容 メニューとメッセージの一部を日本語にした。 アイテム名を変更した。 v002 文字フォントを更新した。 メッセージをできる限り変更した。 この変更によって、変な動作をする場所があるかもしれません。 使用方法 上書きする前にStranded II内のsysを別名にして 別の場所へ取っておいた方がいいです。 ダウンロードした後、lzhファイルを解凍し mods_v002→Stranded II JP→sysを Stranded II内にあるmods→Stranded II→sysに 上書きするだけです。 注意! 使用は自己責任でお願いします。 翻訳は苦手なので、間違いは多いかもしれません。 追加ファイル 日本語MOD用 差し替えフォントver.2b 文字にかかるグラデーションや輪郭をオリジナルに似せることで違和感が出ないように調整された差し替えセット 日本語化MODの画像と差し替えるだけでOK。「ひらがなオンリー」のセットも入ってます テント関連の修正ファイルver.2 同名ファイルと置き換えるだけです テント以外の部分もちょっと直しました ・猿の学校がちゃんと機能しないバグの修正 ・アイテム(テント、バナナ、虫取り網)でメッセージが正しく表示されない部分を修正 ・テントが畳めないバグの修正 ・複数のテントが一斉に畳まれてしまう、無印で元からあるバグの修正
https://w.atwiki.jp/gameswiki/pages/62.html
このページでは、ゲームの開発元によるModサポートがないゲーム等の非公式Modツールについて取り扱います。 Modを導入して遊ぶためのModローダーについては、前提Mod&Modローダー導入を参照してください。 目次 目次 PCゲーム ゲーム機 PCゲーム ゲーム名 Modツール Battlefield 3 Vext MapEditor Battlefield Bad Company 2 Bad Company 2 Map Editor ゲーム機 ゲーム名 Modツール 備考 Super Mario 64 SM64 ROM Manager Quad64 色々(レベルエディタ等)レベルエディタ Mario PartyMario Party 2Mario Party 3 PartyPlanner64 ボードエディタ Super Mario Bros. GreatEd YY-ME SMB Utility レベルエディタ Super Mario Bros. 2(Lost Levels) jGreatEd レベルエディタ Super Mario USA(Super Mario Bros. 2) Super Mario Bros 2 NES Editor レベルエディタ
https://w.atwiki.jp/aster-infra/pages/40.html
# depmod オプション オプション -a(--all) ~ /etc/modprobe.confファイルで指定されている 全てのディレクトリでモジュールを検索するオプション -A(--quick) ~ ファイルシステムスタンプと比較し、 さらに必要ならば「 depmod -a 」と同じようにふるまう -e(--errsyms) ~ 各モジュールごとに解決されていない全てのシンボルを表示する -n(--show) ~ 依存関係ファイルを/lib/modules以下ではなく標準出力に書きだす -q(--quit) ~ quitモード。見つからないシンボルがあっても文句を言わない /lib/modules/ カーネルバージョン ディレクトリにmodules.depファイルを作成する。 modules.depファイルにはモジュールの依存関係が記述されている。 このファイルがないとmodprobeコマンドで依存関係のあるモジュールのロードやアンロードが行われない。
https://w.atwiki.jp/minecraft-moddev/pages/18.html
CraftTweakerとの連携方法(メモ) 目的 自分のModで加工機械を追加し、その機械のレシピをCraftTweakerに対応させたい。 バージョンはMC1.7.10、CraftTweaker 3.0.13を使用 script.zs内で import mods.mymod.MyMachine; MyMachine.addRecipe(...); みたいに書けるようにしたい。 ZenScriptのクラスを登録する Githubを見てみる 1.7.10のブランチもタグもなかったのでMC1.12.2のコードを見てみた https //github.com/CraftTweaker/CraftTweaker/blob/ffb96eba30f7bc2b765414de72c53881d2117a53/CraftTweaker2-API/src/main/java/crafttweaker/api/recipes/IRecipeManager.java ZenScript内で参照させるクラスに@ZenClass("...")と@ZenRegisterをつける メソッドには@ZenMethodをつけIItemStackやIIndegrient[][]などで引数を受け取る という方法を採っているのではないか 別途登録処理が必要なのか、@ZenReigsterアノテーションをつけるだけでいいのか、そもそも@ZenRegisterアノテーションがMC1.7.10に存在しているのかが不明(なさそう) Jarをデコンパイルして中を見てみた MC1.7.10、CraftTweaker 3.0.13を使用 @ZenRegisterアノテーションはなかった ZenClassの登録方法は多分以下の通り 1. MineTweakerAPI.registerClass(Class annotatedClass)を呼び出す ただしannotatedClassは@ZenClassアノテーションをつけたクラス @ZenClassアノテーションをつけたクラスの中身の実装方法については別に書くつもり 2. GlobalRegistry.registerNativeClass(Class ? cls)が呼び出される clsは1.のannotatedClass clsはZenTypeNativeに変換され、GlobalRegistry.rootに登録される ZenTypeNativeも詳細は不明だが、@ZenClass("mods.mymod.MyMachine")とアノテーションをつけておくと、ZenScript内のパッケージmods.mymodやクラスMyMachineとして扱ってくれるようになる、と思う minetweaker.modsにIC2、MFR、NEIとの連携の処理がある @ModOnly({"IC2"})のように書くと、IC2が導入されているときしか使えなくなるようだ minetweaker.mods.ic2.machines.BlastFurnace クラスの宣言部分は @ZenClass("mods.ic2.BlastFurnace") @ModOnly({"IC2"}) public class BlastFurnace { となっていて、@ZenClassアノテーションがついていることが確認できる 中のメソッドは、 @ZenMethod public static void addRecipe(@NotNull IItemStack output, @NotNull IIngredient ingredient) { if(ingredient.getAmount() 0) { MineTweakerAPI.logWarning("invalid ingredient " + ingredient + " - stack size not known"); } else { MineTweakerAPI.apply(new MachineAddRecipeAction("blast furnace", Recipes.blastfurance, MineTweakerMC.getItemStacks(new IItemStack[]{output}), (NBTTagCompound)null, new IC2RecipeInput(ingredient))); } のようになっていて、@ZenMethodアノテーションがついて、IItemStackやIIngredientを受け取っている。 そして**Actionのようなオブジェクトをつくってapplyしている。この**Actionについては調査中 IItemStackやIIngredientをItemStackなどに変換するメソッドも存在するので(https //docs.blamejared.com/ja/#Dev_Area/Ingredients/)、**Actionを使わなくても良いように思える ClassRegistry minetweaker.mods.ic2.ClassRegistryの中身は以下のようになっている public class ClassRegistry { public static void getClasses(List arg) { arg.add(Crop.class); arg.add(CropsConfig.class); arg.add(GrowthRequirements.class); arg.add(SyntheticCrop.class); arg.add(IngredientExpansion.class); arg.add(ItemExpansion.class); arg.add(IC2BracketHandler.class); arg.add(IC2ExplosionWhitelist.class); arg.add(BlastFurnace.class); arg.add(BlockCutter.class); arg.add(Canner.class); arg.add(Compressor.class); arg.add(Extractor.class); arg.add(FluidHeatGenerator.class); arg.add(Macerator.class); arg.add(MatterAmplifier.class); arg.add(MetalFormer.class); arg.add(OreWasher.class); arg.add(Recycler.class); arg.add(ScrapBox.class); arg.add(SemiFluidGenerator.class); arg.add(ThermalCentrifuge.class); } } getClasses()というListを受け取りそこに@ZenClassアノテーションのついたクラスをいれる静的メソッドがある。 このClassRegistryをMineTweakerAPI.registerClassRegistry(Class registryClass, String description)にわたすと、自動でそれぞれのZenClassクラスについてMineTweakerAPI.registerClass(Class annotatedClass)を呼び出してくれるようだ。 なおdescriptionはログの出力にだけ使われるようだ IUndoableActionについて調べる IUndoableActionの内容は以下の通り package minetweaker; public interface IUndoableAction { void apply(); boolean canUndo(); void undo(); String describe(); String describeUndo(); Object getOverrideKey(); } 例えばMyMachineAddRecipeActionクラスでIUndonableActionを実装して、 MineTweakerAPI.apply(new MyMachineAddRecipeAction(arg1, arg2...)); のようにすると、いろいろしてMTTweakerクラスのapply(IUndoableAction action)メソッドが呼び出され、最終的にMyMachineAddRecipeAction#apply()が実行される。 MTTweakerはログの出力や履歴の表示などをしてくれるようなので、Zenスクリプトから呼び出されるメソッドはIUndonableActionを使って実装する方が良いと思う。
https://w.atwiki.jp/akasatanahama/pages/105.html
概要 インベントリを持ち、アイテムを保持できるTileEntityを追加する。 GUIの実装はしていない。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; @Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION) public class AluminiumMod { public static final String MODID = "AluminiumMod"; public static final String MODNAME = "Aluminium Mod"; public static final String VERSION = "1.0.0"; public static Block chestAluminium; @EventHandler public void perInit(FMLPreInitializationEvent event) { chestAluminium = new BlockAluminiumChest() .setBlockName("chestAluminium") .setBlockTextureName("aluminiummod Aluminium_Chest"); GameRegistry.registerBlock(chestAluminium, "chestAluminium"); GameRegistry.registerTileEntity(TileEntityAluminiumChest.class, "TileEntityAluminiumChest"); } } BlockAluminiumChest.java package tutorial.aluminiummod; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class BlockAluminiumChest extends Block implements ITileEntityProvider { private Random random = new Random(); public BlockAluminiumChest() { super(Material.rock); this.setCreativeTab(CreativeTabs.tabDecorations); this.setHardness(5.0F); this.setResistance(1.0F); this.setStepSound(soundTypeMetal); isBlockContainer = true; } @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityAluminiumChest(); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { // TileEntityを取得し、プレイヤーが手にアイテムを持っていないなら取り出し、持っているなら入れる。 TileEntity tileEntity = world.getTileEntity(x, y, z); if (tileEntity == null || !(tileEntity instanceof TileEntityAluminiumChest)) return false; TileEntityAluminiumChest chest = (TileEntityAluminiumChest) tileEntity; if (player.getHeldItem() == null) { player.inventory.mainInventory[player.inventory.currentItem] = chest.tryExportItemStack(); } else { if (chest.tryImportItemStack(player.getHeldItem())) { player.inventory.mainInventory[player.inventory.currentItem] = null; } } return true; } @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { // TileEntityの内部にあるアイテムをドロップさせる。 TileEntityAluminiumChest tileentity = (TileEntityAluminiumChest) world.getTileEntity(x, y, z); if (tileentity != null) { for (int i = 0; i tileentity.getSizeInventory(); i++) { ItemStack itemStack = tileentity.getStackInSlot(i); if (itemStack != null) { float f = random.nextFloat() * 0.6F + 0.1F; float f1 = random.nextFloat() * 0.6F + 0.1F; float f2 = random.nextFloat() * 0.6F + 0.1F; while (itemStack.stackSize 0) { int j = random.nextInt(21) + 10; if (j itemStack.stackSize) { j = itemStack.stackSize; } itemStack.stackSize -= j; EntityItem entityItem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemStack.getItem(), j, itemStack.getItemDamage())); if (itemStack.hasTagCompound()) { entityItem.getEntityItem() .setTagCompound(((NBTTagCompound) itemStack.getTagCompound().copy())); } float f3 = 0.025F; entityItem.motionX = (float) random.nextGaussian() * f3; entityItem.motionY = (float) random.nextGaussian() * f3 + 0.1F; entityItem.motionZ = (float) random.nextGaussian() * f3; world.spawnEntityInWorld(entityItem); } } } world.func_147453_f(x, y, z, block); } super.breakBlock(world, x, y, z, block, meta); } } TileEntityAluminiumChest.java package tutorial.aluminiummod; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; public class TileEntityAluminiumChest extends TileEntity implements IInventory { protected ItemStack[] itemStacks = new ItemStack[54]; protected byte importingSlot; protected byte exportingSlot; public boolean tryImportItemStack(ItemStack itemStack) { for (int i = 0; i this.getSizeInventory(); i++) { importingSlot = this.getNextSlot(importingSlot); if (itemStacks[importingSlot] == null) { itemStacks[importingSlot] = itemStack.copy(); return true; } } return false; } public ItemStack tryExportItemStack() { for (int i = 0; i this.getSizeInventory(); i++) { exportingSlot = this.getNextSlot(exportingSlot); if (itemStacks[exportingSlot] != null) { ItemStack itemStack = itemStacks[exportingSlot].copy(); itemStacks[exportingSlot] = null; return itemStack; } } return null; } protected byte getNextSlot(byte slot) { slot++; if (slot = this.getSizeInventory()) slot = 0; return slot; } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i itemStacks.length; i++) { if (itemStacks[i] == null) continue; NBTTagCompound nbt1 = new NBTTagCompound(); nbt1.setByte("Slot", (byte) i); itemStacks[i].writeToNBT(nbt1); nbttaglist.appendTag(nbt1); } nbt.setTag("Items", nbttaglist); nbt.setByte("ImportingSlot", importingSlot); nbt.setByte("ExportingSlot", exportingSlot); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList nbttaglist = nbt.getTagList("Items", 10); itemStacks = new ItemStack[54]; for (int i = 0; i nbttaglist.tagCount(); i++) { NBTTagCompound nbt1 = nbttaglist.getCompoundTagAt(i); byte b0 = nbt1.getByte("Slot"); if (0 = b0 b0 itemStacks.length) { itemStacks[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } importingSlot = nbt.getByte("ImportingSlot"); exportingSlot = nbt.getByte("ExportingSlot"); } @Override public int getSizeInventory() { return 54; } @Override public ItemStack getStackInSlot(int slot) { return itemStacks[slot]; } @Override public ItemStack decrStackSize(int slot, int amount) { if (itemStacks[slot] == null) return null; ItemStack itemstack; if (itemStacks[slot].stackSize = amount) { itemstack = itemStacks[slot]; itemStacks[slot] = null; return itemstack; } itemstack = itemStacks[slot].splitStack(amount); if (itemStacks[slot].stackSize 1) { itemStacks[slot] = null; } return itemstack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { return null; } @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { itemStacks[slot] = itemStack; if (itemStack != null itemStack.stackSize this.getInventoryStackLimit()) { itemStack.stackSize = this.getInventoryStackLimit(); } } @Override public boolean hasCustomInventoryName() { return false; } @Override public String getInventoryName() { return "container.AluminiumMod.AluminiumChest"; } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer player) { return worldObj.getTileEntity(xCoord, yCoord, zCoord) != this ? false player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) = 64.0D; } @Override public void openInventory() {} @Override public void closeInventory() {} @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return true; } } 解説 GameRegistry void registerTileEntity(Class ? extends TileEntity tileEntityClass, String id) TileEntityをマップに追加する処理。 これをやらないとreadFromNBTが呼ばれず、エラーが出る。 Block boolean isBlockContainer TileEntityを持つブロックかどうか。 使われてないようだが一応設定しておく。 boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) ブロックが右クリックされた時の処理。 void breakBlock(World world, int x, int y, int z, Block block, int meta) ブロックが破壊された時の処理。 ITileEntityProvider TileEntityを持つブロックのためのインターフェース。 TileEntity createNewTileEntity(World world, int meta) TileEntityのインスタンスを生成し返す。 TileEntity void writeToNBT(NBTTagCompound nbt) 引数のNBTにTileEntityのデータを書き込む処理。 void readFromNBT(NBTTagCompound nbt) 引数のNBTからTileEntityのデータを読み込む処理。 IInventory インベントリを持つTileEntityのためのインターフェース。 int getSizeInventory() インベントリのスロット数を返す。 ItemStack getStackInSlot(int slot) 引数のスロットに入っているItemStackを返す。 ItemStack decrStackSize(int slot, int amount) 第一引数のスロットに入ってるItemStackのスタック数を第二引数の量減らす。 ItemStack getStackInSlotOnClosing(int slot) GUIが閉じられた時に、引数のスロットの中身を返し、消す処理。 エンチャントテーブルなど、GUIを閉じたときにドロップするものが使う。 void setInventorySlotContents(int slot, ItemStack itemStack) 引数のスロットの中身を設定する。 boolean hasCustomInventoryName() 名札でつけられた名前を持つかどうか。 String getInventoryName() デフォルトの名前を返す。 int getInventoryStackLimit() インベントリのスタック数の最大値を返す。 boolean isUseableByPlayer(EntityPlayer player) 引数のプレイヤーがGUIを開けるかどうか。 void openInventory() GUIを開いたときの処理。 void closeInventory() GUIを閉じたときの処理。 boolean isItemValidForSlot(int slot, ItemStack itemStack) ホッパーなどが引数のスロットにアクセスできるかを返す。 使用例 プレゼントボックスを追加している部分。 +オファレンMOD OfalenModCore.java package nahama.ofalenmod; /*略*/ /** * @author Akasata Nahama */ @Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION) public class OfalenModCore { public static final String MODID = "OfalenMod"; public static final String MODNAME = "Ofalen Mod"; public static final String MCVERSION = "1.7.10"; public static final String OMVERSION = "1.1.0"; public static final String VERSION = "[" + MCVERSION + "]" + OMVERSION; /*略*/ /** 初期化前処理。 */ @EventHandler public void preInit(FMLPreInitializationEvent event) { /*略*/ OfalenModBlockCore.registerBlock(); /*略*/ } /*略*/ } OfalenModBlockCore.java package nahama.ofalenmod.core; /*略*/ public class OfalenModBlockCore { /*略*/ public static Block boxPresentOfalen; /** ブロックを登録する処理。 */ public static void registerBlock() { /*略*/ boxPresentOfalen = new BlockPresentBox() .setBlockName("boxPresentOfalen") .setBlockTextureName("ofalenmod present_box"); GameRegistry.registerBlock(boxPresentOfalen, "boxPresentOfalen"); GameRegistry.registerTileEntity(TileEntityPresentBox.class, "TileEntityOfalenPresentBox"); } } BlockPresentBox.java package nahama.ofalenmod.block; /*略*/ public class BlockPresentBox extends Block implements ITileEntityProvider { private Random random = new Random(); /** 0 下,1 上,2 横,3 クリスマス下,4;クリスマス上,5 クリスマス横 */ private IIcon[] iicon = new IIcon[6]; public BlockPresentBox() { super(Material.sponge); this.setCreativeTab(OfalenModCore.tabOfalen); this.setHardness(1.0F); this.setResistance(1.0F); this.setStepSound(Block.soundTypeCloth); } @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityPresentBox(); } /*略*/ /** ブロックが破壊された時の処理。 */ @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { // TileEntityの内部にあるアイテムをドロップさせる。 TileEntityPresentBox tileentity = (TileEntityPresentBox) world.getTileEntity(x, y, z); if (tileentity != null) { for (int i = 0; i tileentity.getSizeInventory(); i++) { ItemStack itemStack = tileentity.getStackInSlot(i); if (itemStack != null) { float f = random.nextFloat() * 0.6F + 0.1F; float f1 = random.nextFloat() * 0.6F + 0.1F; float f2 = random.nextFloat() * 0.6F + 0.1F; while (itemStack.stackSize 0) { int j = random.nextInt(21) + 10; if (j itemStack.stackSize) { j = itemStack.stackSize; } itemStack.stackSize -= j; EntityItem entityItem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemStack.getItem(), j, itemStack.getItemDamage())); if (itemStack.hasTagCompound()) { entityItem.getEntityItem().setTagCompound(((NBTTagCompound) itemStack.getTagCompound().copy())); } float f3 = 0.025F; entityItem.motionX = (float) random.nextGaussian() * f3; entityItem.motionY = (float) random.nextGaussian() * f3 + 0.1F; entityItem.motionZ = (float) random.nextGaussian() * f3; world.spawnEntityInWorld(entityItem); } } } world.func_147453_f(x, y, z, block); } super.breakBlock(world, x, y, z, block, meta); } /** ブロックのアイコンを登録する処理。 */ @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { for (int i = 0; i 6; i++) { iicon[i] = register.registerIcon(this.getTextureName() + "-" + i); } } /** ブロックのアイコンを返す。 */ @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { int i = 2; if (side == 0) i = 0; if (side == 1) i = 1; if (OfalenModAnniversaryHandler.isChristmas) i += 3; return iicon[i]; } } TileEntityPresentBox.java package nahama.ofalenmod.tileentity; import nahama.ofalenmod.handler.OfalenModAnniversaryHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; public class TileEntityPresentBox extends TileEntity implements IInventory { protected ItemStack[] itemStacks = new ItemStack[54]; protected String owner; /*略*/ @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i itemStacks.length; i++) { if (itemStacks[i] == null) continue; NBTTagCompound nbt1 = new NBTTagCompound(); nbt1.setByte("Slot", (byte) i); itemStacks[i].writeToNBT(nbt1); nbttaglist.appendTag(nbt1); } nbt.setTag("Items", nbttaglist); nbt.setString("Owner", owner); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList nbttaglist = nbt.getTagList("Items", 10); itemStacks = new ItemStack[54]; for (int i = 0; i nbttaglist.tagCount(); i++) { NBTTagCompound nbt1 = nbttaglist.getCompoundTagAt(i); byte b0 = nbt1.getByte("Slot"); if (0 = b0 b0 itemStacks.length) { itemStacks[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } owner = nbt.getString("Owner"); } /** インベントリのスロット数を返す。 */ @Override public int getSizeInventory() { return 54; } /** スロットのアイテムを返す。 */ @Override public ItemStack getStackInSlot(int slot) { return itemStacks[slot]; } /** スロットのスタック数を減らす。 */ @Override public ItemStack decrStackSize(int slot, int amount) { if (itemStacks[slot] == null) return null; ItemStack itemstack; if (itemStacks[slot].stackSize = amount) { itemstack = itemStacks[slot]; itemStacks[slot] = null; return itemstack; } itemstack = itemStacks[slot].splitStack(amount); if (itemStacks[slot].stackSize 1) { itemStacks[slot] = null; } return itemstack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { return null; } /** スロットの中身を設定する。 */ @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { itemStacks[slot] = itemStack; if (itemStack != null itemStack.stackSize this.getInventoryStackLimit()) { itemStack.stackSize = this.getInventoryStackLimit(); } } /** 金床で設定された名前を持つかどうか。 */ @Override public boolean hasCustomInventoryName() { return false; } /** インベントリの名前を返す。 */ @Override public String getInventoryName() { return "container.OfalenMod.PresentBox"; } /** このインベントリの最大スタック数を返す。 */ @Override public int getInventoryStackLimit() { return 64; } /** プレイヤーが使用できるかどうか。 */ @Override public boolean isUseableByPlayer(EntityPlayer player) { if (owner != null !player.getCommandSenderName().equals(owner)) return false; return worldObj.getTileEntity(xCoord, yCoord, zCoord) != this ? false player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) = 64.0D; } @Override public void openInventory() {} @Override public void closeInventory() {} /** スロットにアクセスできるかどうか。 */ @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return false; } } コメント この項目に関する質問などをどうぞ。 名前
https://w.atwiki.jp/motomods/pages/17.html
商品紹介 標準のStyle Shellとほぼ同じ厚さで無線充電機能と赤外線送信機能を搭載したMods。 機能を絞る一方で、外観への影響を抑えているのが特長。 出資タイプ Flexible Funding(目標金額に達しなくてもプロジェクト実行)Closed(期間終了) PERKS(報酬)一覧 名前 金額 内容 限定数 20% OFF! $10 将来の販売時に20%割引 ∞ Thanks and Gratitude $10 なし ∞ Wireless Charging Style Shell $35 Mods本体(無線充電機能のみ) ∞ Wireless and IR style shell $45 Mods本体(赤外線送信機能付き) ∞ Two Wireless charging shells $65 Mods本体*2(無線充電機能のみ) ∞ Two wireless and IR shells $85 Mods本体*2(赤外線送信機能付き) ∞ More Thanks and Gratitude $100 なし ∞ リンク
https://w.atwiki.jp/arcadegames/pages/17.html
== 概要 == MODEL1はセガが開発したアーケードゲーム用システム基板。 == MODEL1 CPU BOARD 形番および主要チップ == NAME シルク形番 パターン形番 コメント MODEL1 CPU BD 837-8886 171-6298D MODEL1 CPU BD 833-10016ラベル表示 バーチャファイター(VIRTUR FIGHTERS)※上記基板形番による実装 LSI No.IC/LSI型番 外観 コメントなど uPD70615 uPD70615GD-16 V60 CPU NEC IC8 120ピンQFP uPD71051 NEC i8251相当シリアル通信用LSI(USART) 28ピンDIP 315-5338A FUJITSU IC23,IC32(未実装) 100ピンQFP 315-5463 FUJITSU製 IC50 120ピンQFP 315-5464 FUJITSU製 IC43 160ピンQFP 315-5465 NEC製 IC9 100ピンQFP 315-5546A GAL16V8B 20ピンDIP 315-5571 FUJITSU IC57,IC58 160ピンQFP 315-5572 FUJITSU IC60,IC66 160ピンQFP 315-5724 FUJITSU IC40 160ピンQFP == MODEL1 VIDEO BOARD 形番および主要チップ == ※(↑実際には基板にこの表示はないので注意) NAME シルク形番 パターン形番 コメント (MODEL1 VIDEO BOARD) 837-7894-01 171-6080E LSI No.IC/LSI型番 外観 コメントなど 315-5292 FUJITSU 160ピンQFP タイルマップジェネレータ(2DのBG面)※写真はSYSTEM24に実装されていた315-5292 315-5422A RICOH製 5GU040-010 160ピンQFP 315-5423 HITACHI製ゲートアレイ HG62E130R37F 168ピンQFP 315-5424A HITACHI製ゲートアレイ HG62E130R36F 168ピンQFP 315-5425 HITACHI製ゲートアレイ HG62F58R12FL 168ピンQFP 315-5483 SIGNETICS CK2605 PLD 20ピンDIP 315-5484 GAL16V8B 20ピンDIP 315-5485 GAL16V8B 20ピンDIP 315-5486 GAL16V8B 20ピンDIP RGB出力制御用? == MODEL1 MEMORY BD 形番および主要チップ == NAME シルク形番 パターン形番 コメント MODEL1 MEMORY BD 837-7893 171-6079B MODEL1 MEMORY BD 833-10170(ラベル表示) バーチャファイター(VIRTUR FIGHTERS)※上記基板形番による実装 LSI No.IC/LSI型番 外観 コメントなど EPR-16080 IC4 274096 (B)AM27C1024-85DC UV-EPROM 40ピンDIP EPR-16081 IC5 274096 (A)AM27C1024-85DC UV-EPROM 40ピンDIP MPR-16084 IC6 274001(LO)MB834000B-15 MASKROM 32ピンDIP MPR-16085 IC7 274001(HI)MB834000B-15 MASKROM 32ピンDIP MPR-16086 IC8 274001(LO)MB834000B-15 MASKROM 32ピンDIP MPR-16087 IC9 274001(HI)MB834000B-15 MASKROM 32ピンDIP MPR-16088 IC10 274001(LO)MB834000B-15 MASKROM 32ピンDIP MPR-16089 IC11 274001(HI)MB834000B-15 MASKROM 32ピンDIP MPR-16090 IC12 274001(LO)MB834000B-15 MASKROM 32ピンDIP MPR-16091 IC13 274001(HI)MB834000B-15 MASKROM 32ピンDIP EPR-16082 IC14 274001(LO)TMS27C040-15 UV-EPROM 32ピンDIP EPR-16083 IC15 274001(HI)TMS27C040-15 UV-EPROM 32ピンDIP 315-5478 IC17 GAL16V8B 20ピンDIP MPR-16096 IC26 16M/32M MASK ROM (LO)MB8316200A FUJITSU UV-EPROM 42ピンDIP MPR-16097 IC27 16M/32M MASK ROM (HI)MB8316200A FUJITSU UV-EPROM 42ピンDIP MPR-16098 IC28 16M/32M MASK ROM (LO)MB8316200A FUJITSU UV-EPROM 42ピンDIP MPR-16099 IC29 16M/32M MASK ROM (HI)MB8316200A FUJITSU UV-EPROM 42ピンDIP MPR-16100 IC30 16M/32M MASK ROM (LO)MB8316200A FUJITSU UV-EPROM 42ピンDIP MPR-16101 IC31 16M/32M MASK ROM (HI)MB8316200A FUJITSU UV-EPROM 42ピンDIP MPR-16102 IC32 16M/32M MASK ROM (LO)MB8316200A FUJITSU UV-EPROM 42ピンDIP MPR-16103 IC33 16M/32M MASK ROM (HI)MB8316200A FUJITSU UV-EPROM 42ピンDIP - IC39 274001(LO) BLANK32ピンDIP - IC40 274001(ML) BLANK32ピンDIP - IC41 274001(MH) BLANK32ピンDIP - IC42 274001(HI) BLANK32ピンDIP == MODEL1 SOUND BD 形番および主要チップ == MODEL-1 SOUND BD MODEL-1 SOUND BD OPTION NAME シルク形番 パターン形番 コメント MODEL1(MODEL-1) SOUND BD 837-10020(Virtua Fighter) 171-6252A MODEL1(MODEL-1) SOUND BD OPTION 837-8680(Virtua Fighter) 171-6256A LSI No.IC/LSI型番 外観 コメントなど 315-5560 PCM SOUND LSIMODEL1 SOUND BOARDMODEL1 SOUND BOARD OPTION 315-5577 PLD GAL16V8BMODEL1 SOUND BOARD 315-5578 PLD GAL16V8BMODEL1 SOUND BOARD 315-5579 PLD GAL16V8BMODEL1 SOUND BOARDMODEL1 SOUND BOARD OPTION == リンク == セガ(SEGA) セガのLSI(SEGA)
https://w.atwiki.jp/vsxserver/pages/20.html
VSX MODE MOD.無し サーバーの種類 Bukkit 現在のイベント 無し サーバーについて マルチワールドプラグインなどが入っています