Tag: minecraft

在Bukkit中从原理图设置块数据?

我试图在.schematic加载并粘贴一个.schematic文件(不需要挂钩MCEdit API)。 下面是我用来粘贴原理图的function/方法。 粘贴时,我在粘贴过程中不断收到NullPointerException 。 当我记录放置的物品时,我看到草块,石头,但不是我的箱子,箱子里的任何东西,或信标(可能更多块)。 此行发生错误: block.setData(blockData[index], true); 我认为这必须与metaData有关,但我如何从原理图文件中获取该信息并将其应用于每个块? 问题: How can i paste items with metaData like (Chest with contents, torches, beacons, etc.? @SuppressWarnings(“deprecation”) public void pasteSchematic(World world, Location loc, Schematic schematic) { byte[] blocks = schematic.getBlocks(); byte[] blockData = schematic.getData(); short length = schematic.getLenght(); short width = schematic.getWidth(); short height = schematic.getHeight(); […]

如何保护客户端反作弊

第一, 我想表明我知道从客户端发送的任何信息都不可信,因为它可能是欺骗性的。 我对通过默默无闻的安全方法感兴趣,以阻止99.9%的潜在骗子和能够检测到实时绕过安全的程序。 我对此有一些想法包括validation它正在保护的游戏的文件和内存校验和以及任何潜在的作弊应用程序,允许客户端根据服务器的请求(通过TCP)扫描,两者都用于检测内存注入作弊或作弊记忆足迹。 因此,旁路黑客必须侦听在SSL上发送给它的所有TCP信息,然后通过反汇编加密/解密function来解密消息以了解它想要什么。 类似地,客户端本身可能是自我更改的,并允许它随机添加/删除function(但由服务器保留),以便欺骗学习如何绕过它。 这可能毫无意义? 我发现对于经验较丰富的人来说,这对于中等难度,所以我对其他可能难以绕过的方法持开放态度。 我只对可能的实现感兴趣,而不是对客户端的反热是不可能的,我只是想让它变得非常困难。 添加了我的世界和java标签,它是为了Minecraft,我知道社区足够大,有人可能会击败我的系统,但我希望通过使用不断的更新和变化,我可以通过聪明才智和坚持不懈来打败他们。 编辑:我发现这篇文章: 如何防止在我们的(多人)游戏中作弊? 我正在添加他的建议,所以不要重复,因为我正在寻找比明显更多的想法(我不确定他是否可以绕过) 1)打开所有其他进程,并挂钩它们的WriteProcessMemory函数,使它们无法在游戏进程中写入内存。 做得好这一步将阻止所有作弊和欺骗引擎的90%。 2)做同样的事情,挂钩各种鼠标和键盘仿真function。 这将阻止许多目标机器人和其他类型的自动化机器人。 3)在游戏自己的进程中加入VirtualProtectEx / VirtualAllocEx / etc函数,并监视哪些模块正在改变保护级别或分配新的内存块。 为了防止它在你的游戏进行大量分配时过于耗费CPU,你必须对此非常狡猾,但它可以完成。 4)挂钩LoadLibrary函数并监视动态加载的任何DLL,以防止DLL注入。 5)在游戏连接上使用一些轻量级多态编码。 6)使用一些反调试技术来防止调试器附加到您的进程。 谷歌反调试,你应该能够找到很多东西。 7)使用定制的专有PE打包器来防止有用的游戏拆卸。 8)了解处理透明度和alpha混合的OpenGL或Direct3D函数和方法。 9)如果使用着色器,则校验和着色器和着色器常量值。 10)对玩家角色使用额外的遮挡剔除技术,以防止在他们的视线被其他几何体阻挡时完全渲染它们。 它也可能对您的表现有所帮助,也可能没有帮助,但它可以防止许多问题。

Minecraft Forge 1.8 – 加载块纹理

我刚刚开始学习Java,同时修改了Minecraft。 我已经看过一个关于使用Minecraft Forge API将块添加到游戏中的教程,但我遇到了问题。 不再有“.setBlockTextureName()”方法,所以我不知道该怎么做。 我在游戏中添加了一个简单的块,但它没有纹理,我想为它添加纹理。 我如何为Minecraft 1.8做这个? PS:如果这是重复的,我很抱歉,我只看到有关Minecraft怪物的问题,而不是1.8的纹理(记住这一点,1.8的Forge API与其他版本不同),所以我决定问问自己。 如果我需要澄清任何事情,请告诉我!

Java不支持major.minor版本52.0错误我的世界

我目前正在尝试运行一个插件,我正在研究测试服务器。 Minecraft服务器正在运行spigot 1.7.10,这里是服务器java版本: java version “1.7.0_65” Java(TM) SE Runtime Environment (build 1.7.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode) 这是我的java版本 java version “1.7.0_71” Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) 因此,加载它时,为什么我应该在插件上收到此错误是没有意义的。 26.11 02:19:38 [Server] INFO org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: mad/madster/msm/Main : Unsupported major.minor version 52.0 我在Windows 8上使用eclipse […]

从哪里开始创建Minecraft客户端mods

我看了整个网络和YouTube,由于某种原因,这是一些绝密信息或者其他什么,但我正在试图找到从哪里开始制作Minecraft客户端mod,最好是可以放入一个包中的东西喜欢为用户提供简单的野兽或技术包,但无论哪种方式都可以。 我将如何创建一个mod? 我熟悉eclipse和java编程本身,但我不知道从哪里开始编写插件。 我已经尝试过设置Minecraft Forge,但由于某种原因,它非常令人困惑和非常混乱。 我不能只包括一些Minecraft库,从一个简单的样板开始,然后从那里开始? (就像开发Bukkit一样)

将Chars写入Java套接字时出现fsockopen 10053错误

对, 我正在尝试用PHP编写一个wee脚本,它将向Minecraft发送一个游戏聊天包。 //Deliberately low timeout $mc = fsockopen(“localhost”, 25565, $errno, $err, 3); 现在,如果连接成功,那么我发送2个“数据包”。 一个字节,其中包含整数3,告诉Minecraft它应该像Packet3Chat“数据包”一样处理传入的网络流量: fwrite( $mc, strrev( pack( “C”, 3 ) ) ); 这看起来像A-OK **。 需要的第二个“数据包”是字符串的长度作为有符号的短 。 $my_string = “Hello World!”; //119 character limit on Minecraft chat messages $processed_string = substr($my_string, 0, 119); fwrite($mc, strrev( pack( “s”, strlen( $processed_string ) ) ) ); 而且这似乎也可以正常工作**。 而现在剩下要做的就是发送实际的字符串, […]

如何使用实例引用实例?

我正在尝试最小化我创建实例的程度,因为我不是特别擅长Java。 目前我在Main中有一组其他类的实例,一个简单的例子…… public final class ClassName extends JavaPlugin { AntiSwear antiSwear = new AntiSwear(); Spam spam = new Spam(); @Override public void onEnable() { // Plugin startup logic } @Override public void onDisable() { // Plugin shutdown logic } } 而不是制作越来越多的实例,我只想创建一个主类的实例, ClassName className = new ClassName(); 并运行类似className.spam… 基本上把我的胡言乱语变成英语:我只想看看如何使用实例引用实例。

这段代码做了什么?

我不太确定这意味着什么,或者它做了什么,有人可以详细说明吗? Player player = (Player) sender;

指针 – 减少内存消耗

我一直在为OpenGL练习编写Minecraft副本(我猜多少),但是在编写基本渲染API之后,我注意到真正的Minecraft使用了很多或内存 – 大约800MB! 我完全可以理解为什么这与它必须记住的所有块以及生成器的怪物和可能的地形数据…我问自己“这个块与那个块完全相同……它们可以在代码中吗? “ 并且记得C ++有指针,所以我试图在Java中做同样的事情我想到的唯一方法,创建每个块的一个静态实例而不使用new关键字,这是最好的方法吗? 它似乎肯定有帮助..如果可能的话,我仍然希望它更好吗? 这是有问题的课程.. public abstract class Block { public static DirtBlock Dirt = new DirtBlock(); public static GrassBlock Grass = new GrassBlock(); public static RedstoneOreBlock RedstoneOre = new RedstoneOreBlock(); public static TNTBlock TNT = new TNTBlock(); public static MonsterSpawnerBlock Monserspawner = new MonsterSpawnerBlock(); public static BedrockBlock Bedrock = new […]

当没有这样的环境变量时,“选择_JAVA_OPTIONS”

这个问题特别适用于Minecraft,但它影响了我的计算机上运行的所有Java程序。 似乎有些东西强行设置_JAVA_OPTIONS环境变量。 当我运行我的服务器时,我已指定为其分配4 GB的RAM -Xms4G -Xmx4G 在启动批处理文件中。 但是,当服务器运行时,它会向控制台输出“Picked up _JAVA_OPTIONS:-Xms2048M -Xmx2048M”,仅分配2 GB。 我检查了系统设置,列表中没有_JAVA_OPTIONS环境变量。 我不想添加一个,因为那也将尝试为Minecraft本身分配4 GB,这是不必要的并且使用太多的RAM。 可能导致设置此变量的原因是什么? (Windows 8.1 64位,Java 7)