提供: Minecraft Modding Wiki
移動先: 案内検索
(ページの新規作成)
 
(サンプルのクラス名を変更)
17行目: 17行目:
 
import dan200.computercraft.api.ComputerCraftAPI;
 
import dan200.computercraft.api.ComputerCraftAPI;
  
 
+
@Mod(modid="SamplePeripheralMod", name="SamplePeripheralMod", version="1.0")
@Mod(modid="BlockSampleMod", name="BlockSampleMod", version="1.0")
 
 
public class SamplePeripheralCore
 
public class SamplePeripheralCore
 
{
 
{
    public static Block blockSample;
 
  
    @EventHandler
+
public static Block blockSamplePeripheral;
    public void init(FMLInitializationEvent event)
 
    {
 
    blockSample = new SampleBlock();
 
  
GameRegistry.registerBlock(blockSample, "blockSample");
+
@EventHandler
GameRegistry.registerTileEntity(SampleTile.class, "tileSample");
+
public void init(FMLInitializationEvent event)
 
+
{
ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider());
+
blockSamplePeripheral = new SamplePeripheralBlock();
    }
+
GameRegistry.registerBlock(blockSamplePeripheral, "blockSamplePeripheral");
 +
GameRegistry.registerTileEntity(SamplePeripheralTile.class, "tileSamplePeripheral");
 +
ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider());
 +
}
 
}
 
}
 
</source>
 
</source>
  
*SampleBlock.java
+
*SamplePeripheralBlock.java
 
<source lang = "java">
 
<source lang = "java">
 
package mods.blocksample;
 
package mods.blocksample;
46行目: 44行目:
 
import net.minecraft.world.World;
 
import net.minecraft.world.World;
  
public class SampleBlock extends BlockContainer {
+
public class SamplePeripheralBlock extends BlockContainer {
  
protected SampleBlock()
+
protected SamplePeripheralBlock() {
{
 
 
super(Material.rock);
 
super(Material.rock);
setBlockName("blockSample");
+
setBlockName("blockSamplePeripheral");
 
setCreativeTab(CreativeTabs.tabBlock);
 
setCreativeTab(CreativeTabs.tabBlock);
 
}
 
}
  
 
@Override
 
@Override
public TileEntity createNewTileEntity(World world, int a)
+
public TileEntity createNewTileEntity(World world, int a) {
{
+
return new SamplePeripheralTile();
return new SampleTile();
 
 
}
 
}
  
64行目: 60行目:
 
</source>
 
</source>
  
*SampleTile.java
+
*SamplePeripheralTile.java
 
<source lang = "java">
 
<source lang = "java">
 
package mods.blocksample;
 
package mods.blocksample;
74行目: 70行目:
 
import dan200.computercraft.api.peripheral.IPeripheral;
 
import dan200.computercraft.api.peripheral.IPeripheral;
  
public class SampleTile extends TileEntity implements IPeripheral
+
public class SamplePeripheralTile extends TileEntity implements IPeripheral
 
{
 
{
  
161行目: 157行目:
 
TileEntity tile = world.getTileEntity(x, y, z);
 
TileEntity tile = world.getTileEntity(x, y, z);
  
if (tile != null && tile instanceof SampleTile) {
+
if (tile != null && tile instanceof SamplePeripheralTile) {
return new SampleTile();
+
return new SamplePeripheralTile();
 
}
 
}
  
174行目: 170行目:
 
書きかけ
 
書きかけ
 
==== SamplePeripheralCore.java ====
 
==== SamplePeripheralCore.java ====
==== SampleBlock.java ====
+
==== SamplePeripheralBlock.java ====
==== SampleTile.java ====
+
==== SamplePeripheralTile.java ====
 
==== PeripheralProvider.java ====
 
==== PeripheralProvider.java ====

2014年10月11日 (土) 05:39時点における版

この記事は執筆中です。加筆してくださる人を募集しています。

この記事は"Minecraft Forge Universal 10.13.0.x~"及び"ComputerCraft 1.64~"を前提MODとしています。

周辺機器の追加

ComputerやTurtleから利用できる簡単な周辺機器ブロックを追加する。

ソースコード

  • SamplePeripheralCore.java
package mods.blocksample;

import net.minecraft.block.Block;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import dan200.computercraft.api.ComputerCraftAPI;

@Mod(modid="SamplePeripheralMod", name="SamplePeripheralMod", version="1.0")
public class SamplePeripheralCore
{

	public static Block blockSamplePeripheral;

	@EventHandler
	public void init(FMLInitializationEvent event)
	{
		blockSamplePeripheral = new SamplePeripheralBlock();
		GameRegistry.registerBlock(blockSamplePeripheral, "blockSamplePeripheral");
		GameRegistry.registerTileEntity(SamplePeripheralTile.class, "tileSamplePeripheral");
		ComputerCraftAPI.registerPeripheralProvider(new PeripheralProvider());
	}
}
  • SamplePeripheralBlock.java
package mods.blocksample;

import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;

public class SamplePeripheralBlock extends BlockContainer {

	protected SamplePeripheralBlock() {
		super(Material.rock);
		setBlockName("blockSamplePeripheral");
		setCreativeTab(CreativeTabs.tabBlock);
	}

	@Override
	public TileEntity createNewTileEntity(World world, int a) {
		return new SamplePeripheralTile();
	}

}
  • SamplePeripheralTile.java
package mods.blocksample;

import net.minecraft.tileentity.TileEntity;
import dan200.computercraft.api.lua.ILuaContext;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.peripheral.IComputerAccess;
import dan200.computercraft.api.peripheral.IPeripheral;

public class SamplePeripheralTile extends TileEntity implements IPeripheral
{

	@Override
	public String getType()
	{
		return "sample";
	}

	@Override
	public String[] getMethodNames()
	{
		return new String[] { "fn1", "fn2", "fn3", "fn4" };
	}

	@Override
	public Object[] callMethod(IComputerAccess computer, ILuaContext context,
			int method, Object[] arguments) throws LuaException,
			InterruptedException
	{
		switch (method) {
		case 0:
			if( arguments.length < 1 || !(arguments[0] instanceof Boolean) ) {
				throw new LuaException("Expected boolean");
			}
			return new Object[] {"fn1", arguments[0]};

		case 1:
			if( arguments.length < 1 || !(arguments[0] instanceof Double) ) {
				throw new LuaException("Expected number");
			}
			return new Object[] {"fn2", arguments[0]};

		case 2:
			if( arguments.length < 1 || !(arguments[0] instanceof String) ) {
				throw new LuaException("Expected string");
			}
			return new Object[] {"fn3", arguments[0]};

		case 3:
			if( arguments.length < 1 || arguments[0] == null) {
				throw new LuaException("Expected argument");
			}
			return new Object[] {"fn4", arguments[0], arguments[0].getClass().getName()};
		}

		return null;
	}

	@Override
	public void attach(IComputerAccess computer)
	{

	}

	@Override
	public void detach(IComputerAccess computer)
	{

	}

	@Override
	public boolean equals(IPeripheral other)
	{
		return (other != null) && (other.getClass() == this.getClass());
	}

}
  • PeripheralProvider.java
package mods.blocksample;

import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import dan200.computercraft.api.peripheral.IPeripheral;
import dan200.computercraft.api.peripheral.IPeripheralProvider;

public class PeripheralProvider implements IPeripheralProvider
{

	@Override
	public IPeripheral getPeripheral(World world, int x, int y, int z, int side)
	{
		TileEntity tile = world.getTileEntity(x, y, z);

		if (tile != null && tile instanceof SamplePeripheralTile) {
			return new SamplePeripheralTile();
		}

		return null;
	}

}

解説

書きかけ

SamplePeripheralCore.java

SamplePeripheralBlock.java

SamplePeripheralTile.java

PeripheralProvider.java