如果你从未玩过Minecraft,那么这就是发射器的机械工作方式.
用户可以下载一个JAR(或者一个打包到EXE中的JAR),它完全没有Minecraft客户端的代码.这被认为是发射器.当启动器启动时,它会显示一个带有新闻等的登录屏幕.然后,登录后,启动器将运行主要的Minecraft核心,minecraft.jar.如果系统上没有,则下载它.Minecraft启动程序不需要任何外部Java库来运行.
它是如何做到的?
我正在尝试复制这个功能,但是,当我在Eclipse中导出为可运行的JAR时,当我尝试启动它时,它会输出"找不到主类launcher.jar.程序将退出"(这是在控制台上) ,我希望能够双击JAR并让它启动)
File file = new File(System.getProperty("user.dir") + "/lessur.jar");
System.setProperty("org.lwjgl.librarypath", System.getProperty("user.dir") + "natives");
URLClassLoader classLoader;
classLoader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()});
classLoader.loadClass("zombie.engine.Lighting2").newInstance();
Run Code Online (Sandbox Code Playgroud) for (int ix = x - r; ix < x + r + 1; ix++) {
for (int iz = z - r; iz < z + r + 1; iz++) {
for (int iy = y - r; iy < y + r + 1; iy++) {
// if ix,iy,iz = something blah blah (this part isn't needed)
}
}
}
Run Code Online (Sandbox Code Playgroud)
好的,现在问题就在这里.上面的当前代码获得x,y,z和r(范围).它的工作是通过"立方体"引用,直到满足我设定的某个条件.问题在于它从立方体的外部开始并且基本上从一个角落进入另一个角落.
我正在寻找一种方式(我的数学/ Java是不是喜欢我大气压)在从POS POS机和环向外开始(包括POS本身),直到它到达立方体的最外面的边界.
因此,如果我们给出了所有假值,让我们使用x = 5,y = 5,z = 5,r = 2代码应检查5,5,5 - 4,5,5 6,5,5 5,6,5 5,4,5等基本上从中心向外迭代每个东西. …
如果你玩过我的世界,以下将更有意义.由于你们许多人没有,我会尽力解释它
我正在尝试编写一个递归函数,可以找到从Minecraft食谱的平面文件中制作任何minecraft项目的步骤.这个让我很难过.
平面文件有点长,所以我把它包含在这个要点中.
def getRecipeChain(item, quantity=1):
#magic recursive stuffs go here
Run Code Online (Sandbox Code Playgroud)
所以基本上我需要查找第一个食谱然后查找第一个食谱的所有组分的食谱,依此类推,直到你找到没有食谱的食物.每次我需要将配方附加到列表中,这样我就可以得到一种关于制作物品的顺序的指令集.
所以这是我现在的功能(一个不起作用)
def getRecipeChain(name, quantity=1):
chain = []
def getRecipe(name1, quantity1=1):
if name1 in recipes:
for item in recipes[name1]["ingredients"]["input"]:
if item in recipes:
getRecipe(item, quantity1)
else:
chain.append(item)
getRecipe(name, quantity)
return chain
Run Code Online (Sandbox Code Playgroud)
这是我想要的理想输出.它是一个字典,其中存储了项目名称和数量.
>>> getRecipeChain("solar_panel", 1):
{"insulated_copper_cable":13, "electronic_circuit":2, "re_battery":1, "furnace":1, "machine":1, "generator":1, "solar_panel":1}
Run Code Online (Sandbox Code Playgroud)
所以问题是,我该怎么做?
我知道要求人们为你做的工作在这里不受欢迎,所以如果你觉得这对你来说有点太接近我只是这么说.
[06-Nov-2013 17:57:32] PHP警告:socket_connect()[function.socket-connect]:无法连接[111]:/home2/whoop/public_html/phptesting/main.php上的连接被拒绝43
我一直收到这个错误.这是我的main.php中的一段代码
<?php
$host = '76.72.172.166';
$port = 25608;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //Create the socket
$connected = socket_connect($socket, $host, $port);//Try and connect
?>
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置一个Minecraft播放器列表这是我使用 http://forums.bukkit.org/threads/web-constantly-updated-website-widgets.148592/
我正在制作一个自定义装甲,在我的盔甲课中,我收到了这个错误:
ArmorE类型的方法getArmorTexture(ItemStack,Entity,int,int)必须覆盖或实现超类型方法
为什么我收到此错误?
这是我的代码:
护甲等级:
package com.domoq.EmeraldGear.armor;
import com.domoq.EmeraldGear.EmeraldGearMod;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
public class ArmorE extends ItemArmor {
public ArmorE(ArmorMaterial part2ArmorE, int part3, int part4) {
super(part2ArmorE, part3, part4);
this.setCreativeTab(CreativeTabs.tabCombat);
}
@Override
public String getArmorTexture(ItemStack stack, Entity entity, int slot, int type) {
if (stack.getItem() == EmeraldGearMod.EmeraldHelmet || stack.getItem() == EmeraldGearMod.EmeraldChest || stack.getIconIndex() == EmeraldGearMod.EmeraldBoots) {
return "emeraldgearmod:textures/models/armor/ArmorL1.png";
} else if (stack.getItem() == EmeraldGearMod.EmeraldLegs) {
return "emeraldgearmod:textures/models/armor/ArmorL2.png";
} else return null;
}
} …Run Code Online (Sandbox Code Playgroud) 我刚刚开始编写Bukkit编码,我一直在尝试编写一个插件,为某个播放器启用pvp,并且可以禁用它,但仅限于自己.它工作正常,直到我发现我需要一个事件来完成这项工作,但我还没有得知我需要的事件.在网上看了几个视频/东西后,找不到任何可以帮助我的东西.如果你能告诉我如何做到这一点,那就太好了.此外,如果你能解释更多关于事件,也将不胜感激:)
package me.impatheimpaler.test;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public class togglepvp extends JavaPlugin implements Listener{
public void onEnable() {
}
public void onDisable() {
}
List<String> toggled = new ArrayList<String>();
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if (cmd.getName().equalsIgnoreCase("togglepvp")) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only a Player can run this command.");
return false;
}
Player player = (Player) sender;
if (toggled.contains(player.getName())) {
player.sendMessage(ChatColor.RED + …Run Code Online (Sandbox Code Playgroud) 我编写了一个网站,我的朋友们可以在该网站上通过PHP启动和关闭其Minecraft服务器。要停止其服务器,.bat文件会终止该进程,但是通常,Minecraft服务器将使用“停止”命令停止。Minecraft服务器在CMD中运行,所以我的问题是:
是否可以将命令从启动的.bat发送到单独的已打开的CMD,以便已打开的CMD停止服务器?
我试图在Bukkit mod中更新Minecraft中的块,并能够//undo在Minecraft中进行那些更改.我可以改变块但我无法//undo改变.
我一定错过了一些简单的东西,因为谷歌没有帮我找到解决方案.
这是我的mod.它将当前所选区域中的单个块设置为空中.注释掉的行是我尝试过的对我不起作用的东西.
public class Main extends JavaPlugin implements Listener
{
// ... //
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (command.getName().equalsIgnoreCase("setair"))
{
org.bukkit.entity.Player bukkitPlayer = (org.bukkit.entity.Player) sender;
WorldEditPlugin worldEditPlugin = null;
worldEditPlugin = (WorldEditPlugin) Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
if(worldEditPlugin == null){
bukkitPlayer.sendMessage("Error: WorldEdit is null.");
}
else
{
com.sk89q.worldedit.bukkit.selections.Selection s = worldEditPlugin.getSelection(bukkitPlayer);
com.sk89q.worldedit.LocalSession localSession = worldEditPlugin.getSession(bukkitPlayer);
com.sk89q.worldedit.world.World localWorld = localSession.getSelectionWorld();
com.sk89q.worldedit.bukkit.BukkitPlayer wrappedPlayer = worldEditPlugin.wrapPlayer(bukkitPlayer);
com.sk89q.worldedit.LocalPlayer localPlayer = wrappedPlayer;
//com.sk89q.worldedit.world.World localWorld2 = …Run Code Online (Sandbox Code Playgroud) 我正在研究体素地形生成器。一切都很好,我有生物群落,街区等。
让我感到震惊的是我团结一致的项目速度。如果我在主线程上运行所有程序,则只能加载并渲染1到2个块,而不会降至70fps以下。这主要是因为块中的每个块都必须检查其邻居以定义其块侧可见性。一个块有6个邻居,一个块有16个块。这很快就进行了很多检查。
我读过《我的世界》是单线程的,但我很难相信,因为它的块加载速度非常快并且没有fps下降。
我的解决方案是在另一个线程上运行块的块邻居的检查。这将大大提高我的fps和我的块加载速度。这是正确的方法吗?我不想使用线程,因为我的代码未优化。这就像将灰尘推到地毯下面。
谢谢阅读
编辑:检查邻居的代码
//Block provides its mesh information
//Check for solidity of adjacent blocks
public virtual MeshData CreateBlockData(Chunk chunk, int x, int y, int z, MeshData meshData)
{
//Set this to true to turn on collider creation shaped like the chunks
meshData.useRenderDataForCol = true;
if (!chunk.GetBlock(x, y + 1, z).IsSolid(Direction.down))
{
meshData = FaceDataUp(chunk, x, y, z, meshData);
}
if (!chunk.GetBlock(x, y - 1, z).IsSolid(Direction.up))
{
meshData = FaceDataDown(chunk, x, y, z, meshData);
}
if (!chunk.GetBlock(x, y, …Run Code Online (Sandbox Code Playgroud) c# multithreading procedural-generation unity-game-engine minecraft
我正在尝试将键盘输入发送到 Minecraft 以移动播放器,但是当我尝试使用时SendKeys.SendWait("W");什么也没有发生。如果我在 Minecraft 中打开聊天,它会在聊天中输入“W”,但是在聊天之外我的输入似乎被忽略了。谢谢。
编辑:我试过使用SendInput以及InputSimulator两者都具有相同的效果。