php开发我的世界插件,WorldEdit/开发与API
本页面已存在其他语言的内容,请协助翻译为本地化的中文。
点击此处开始翻译。
如本模板出现在原文存档页面,请注意更新主页面后,仍需要去除此处该模板
如当前页面已经没有需要翻译的内容,请删去待翻译模板
有标题的大篇幅文章,如果短时间内无法全部翻译,请先把所有的标题翻译出来,以便
之后的贡献者选择与翻译章节内容。
简介
WorldEdit为其他Mod和插件开发提供了一个稳定的公共接口, 这个接口提供了平台独立的接口和类去让你使用Minecraft内部的方块, 生物群系, 和世界的操作, 也支持一部分的实体操作
API支持
WorldEdit的库在com.sk89q.worldedit包下面, 根据你需要的不同API, 你可以选择下面这些库来使用
worldedit-core: 核心的API库, 不依赖于任何的平台, 也不提供任何平台的相互兼容
worldedit-bukkit: Bukkit的接口实现, 依赖于Bukkit, 使用BukkitAdapter来提供Bukkit和WorldEdit两个平台的相互兼容
worldedit-fabric-mcXYZ: Fabric接口实现, 依赖于Facric API, 使用FabricAdapter来提供Facric和WorldEdit两个平台的相互兼容, XYZ应该换成对应Minecraft的版本
worldedit-forge-mcXYZ: Forge接口实现, 依赖于Forge, 使用ForgeAdapter来提供Forge和WorldEdit两个平台的相互兼容, XYZ应该换成对应Minecraft的版本
worldedit-sponge-mcXYZ: Sponge接口实现, 依赖于Sponge API, 使用SpongeAdapter来提供Sponge和WorldEdit两个平台的相互兼容, XYZ应该换成对应Minecraft的版本(因为Sponge还没出新版Minecraft支持, 所以最新只支持到Minecraft1.12.2)
worldedit-cli: 命令行接口实现, 当做依赖来用不太方便, 但是可以在Minecraft外部来调用WorldEdit
应该依据你使用的Minecraft版本来选择对应的WorldEdit API版本, WorldEdit6支持1.12.2以下的版本, WorldEdit7是给1.13+用的, 我们只给最新的WorldEdit和Minecraft的提供支持与更新, 但通常来说API跨了版本也是很相似的, 所以说使用方式和例子也很相似, 虽然你还能找到旧版的文档, 但是你现在看到的内容只包括了最新版本的WorldEdit内容
接下来你可以开始使用这些API了, 这里可以浏览#API概论, 一些常用的API的用法在#API实例里面介绍, 在开发的时候, 记得留意[#内部API]来保证你在使用受支持的API
API概论
WorldEdit使用了一些很简单的概念来灵活的操作元素和组件, 下面是一些具体的概念的细节, 你应该按顺序来读, 因为后面的概念通常需要你理解前面的概念才能读懂
发动者 (Actors)
Actor是使用某些API的时候会用到的东西, 通常来说, Actor可以是一个玩家, 也可以是命令方块、控制台或实体, 你需要明白的是, 虽然提供Actor的玩家、命令方块等等一般都有对应的坐标位置, 但是Actor本身不表示世界上的一个具体位置.
Mod和插件使用WorldEdit API的时候一般都不需要提供Actor作为参数, 但你监听某些事件(比如说EditSessionEvent)的时候, 事件所返回的参数中会提供一个Actor对象, 来让你判断和操作这个Actor所对应的玩家或命令方块等
方块 (Blocks)
方块被拆分成了两部分, Type(方块类型)和State(方块状态), 拆成具体的类也就是BlockType和BlockState类, BlockType举个例子可以是 "minecraft:oak_log" 而BlockState一般是类型(像这样的type: minecraft:oak_log)和属性(像这样的properties [axis=y])的一个组合
如果你想从BlockType中获取到一个BlockState, 你可以调用getDefaultState()方法, 或者提供对应的属性的Mapping来获取, 使用的是getState(Map)方法
下面举个例子, 获取minecraft:oak_log[axis=y]这个属性
BlockType oakLog = Objects.requireNonNull(BlockTypes.OAK_LOG);
BlockState yFacingOakLog = oakLog.getState(ImmutableMap.of(
oakLog.getProperty("axis"), "y"
));
System.err.println("State: " + yFacingOakLog);
一些包含NBT的方块, 是用BaseBlock类的实例来表示的
调用BlockState的toBaseBlock(NBTCompoundTag)方法可以得到对应的BaseBlock实例
图案和蒙版 (Patterns and Masks)
对于图层和蒙版的描述和主页面条目里面相同. 唯一的不同点是API中要操作对应的类来构建图层和蒙版, 不再使用字符串格式了
单方块的图案可以用像是BlockState和BaseBlock这样的BlockStateHolder来表示, 像是TypeApplyingPattern和RandomStatePattern这样其他的图案, 类名就直接是它们的名字了. 当然, 你也可以用你的IDE去找Pattern类的子类
蒙版就完全不是这么简单的了, 使用BlockMask类可以直接精确匹配或者模糊匹配对应的BlockState, 但你也可以只通过BlockType(BlockTypeMask)'或者是Properties(BlockStateMask)来选取目标, 在Masks类中有一些预设的实用蒙版, 你可以去使用一下. 当然我们还是推荐你用IDE去找找Mask的子类
Extents接口(Extents)
Extent接口形式是WorldEdit方块处理的骨干部分. Extent通常被分成三类: (输入)Input, (输出)output, (输入输出)both, 虽然Extents接收和提供方块和生物群系的信息, 但它不与世界和维度相关联
Input的Extent是用来为给定的位置设置方块和生物群系的, 但是你不能用它来设置方块
Output的Extent是用来从给定的位置获取方块和生物群系的, 但是你不能用它来获取方块
几乎WorldEdit中所有的Extent都实现了*Extent接口typically through the Extent interface. Extent instances also provide a minimum and maximum point, as well as entity manipulation methods.
Some examples of extents are worlds and clipboards. Many block placement features in WorldEdit - such as fast and reorder mode - are implemented using AbstractDelegateExtent and hooking into setBlock.
相关文章:

关于AI,腾讯又有大动作!开发者该如何应对?
时隔 6 年后,腾讯公司的组织架构迎来新一轮的优化调整,在原有七大事业群(BG)的基础上进行重组整合。 腾讯公司董事会主席兼首席执行官马化腾表示:“作为一家以互联网为基础的科技和文化公司,技术是腾讯公司…

Android存储方式之SQLite
前言 SQLite数据库操作在Android开发中非常常用今天我将带大家全面了解关于SQLite数据库的操作(增、删、查、改)目录 1. SQLite数据库介绍 SQLite是Android内置的一个小型、关系型、属于文本型的数据库。 > Android提供了对 SQLite数据库的完全支持&a…

最近要换个主机,现在的太慢了
最近在学习wtl,打算做一个文件搜索工具来练手,需要正则表达式处理、数据库存储、键盘HOOK以及UI等技术UI用WTL搞定正则表达式的处理:http://research.microsoft.com/projects/greta/regex_perf.htmlhttp://www.tropicsoft.com/Components/Reg…

oracle数据库配置失败,oracle11g – Oracle 11G XE安装错误:数据库配置失败
在linuxMint上安装后运行oracle配置时:/etc/init.d/oracle-xe configure指定以下错误:sudo /etc/init.d/oracle-xe configureOracle Database 11g Express Edition Configuration-------------------------------------------------This will configure …
显示来自多个表的数据——JOIN
表关系简介 一、语法 SELECT 字段列表FROM TABLE1 [CROSS JOIN TABLE2 ] | [NATURAL JOIN TABLE2 ] | [JOIN TABLE2 USING (字段名) ] | [JOIN TABLE2 ON (TABLE.COLUMN_NAME TABLE2.COLUMN_NAME) ] | [(LEFT | RIGHT | FULL OUT) JOIN TABLE2 ON (TABLE1.COLUMN_NAME TABL…

20年第三次架构大调整,腾讯永远年轻!
整理 | 琥珀出品 | AI科技大本营(公众号ID:rgznai100)凌晨,腾讯官方公众号发布了一则消息,公布了成立 20 周年以来的新一轮整体战略升级。此前,国内各大互联网公司包括阿里、百度、美团、滴滴、京东都相继进…

NHibernate和Cuyahoga(二)(翻译):
原文:http://www.cuyahoga-project.org/home/developers.aspxMappings: 在我们使用像NHibernate这样强大的ORM工具的时候,映射类有时候是相当严格的.这就造成了很大的障碍,尤其是由于没有足够的真实的映射例子(更确切的说,对于Java版本的Hibernate来说,会有更多的例子).…

Enterprise Library Step By Step系列(十二):异常处理应用程序块——进阶篇
一.把异常信息Logging到数据库在日志和监测应用程序块中,有朋友提意见说希望能够把异常信息Logging到数据库中,在这里介绍一下具体的实现方法。1.创建相关的数据库环境:我们可以用日志和监测应用程序块自带的SQL语句来…

观点PK_倘若做不好AI,云服务商还能勇往直前吗?
AI强大却不独立存在,如今已经成为人们普遍接受的理念之一。在这个火热的时代,AI技术不是一个独立的产品,而是一种“基本生产力”,它适用于大部分经济活动,可以让各行各业都产生“增倍效应”,可以预见的是&a…

练习 MongoDB 操作 —— 备份篇(三)
2019独角兽企业重金招聘Python工程师标准>>> mongodb数据备份和还原主要分为二种, 一种是针对于库的mongodump和mongorestore, 一种是针对库中表的mongoexport和mongoimport。 mongodb 数据库操作--备份 还原 导出 导入 导入与导入 导入与导出…

判断是否为闰年oracle,ORACLE 通过日期变量判断是否闰年
最近在做同比环比报表,2月份的日期需要判断是否闰年,在网上查了很多资料,大部分都是用sysdate说明的,不是很理想,自己捣鼓了半天,终于整出来了。跟大家分享下。declarevbdate date;V_LASTDAY NUMBER(2,0);V…

CentOS 6.x中目录结构及用途
目录名称作用/根目录,一般根目录下只存放目录,不要存放文件/bin存放普通用户可执行的系统命令/sbin存放的是超级管理员执行的系统命令/etc系统管理和配置文件存放路径/etc/rc.d启动的配置文件和脚本存放目录/etc/passwd系统用户密码文件,包含…

oracle dataguard 日志 很多no,oracle dataguard 日志传输原理
Services),它不仅控制着传输redo数据到其它数据库,同时还管理着解决由于网络中断造成的归档文件未接收的过程。一、如何发送数据在primary数据库,DataGuard可以使用归档进程(ARCn)或者日志写进程(LGWR)收集redo数据并传输到standby࿰…

“偷鸡”不成的马斯克,终于丢掉了自己的“王位”
整理 | 非主流出品 | AI科技大本营(公众号ID:rgznai100)昨天,好战的马斯克丢了一血。据多家外媒报道,美国当地时间周六,埃隆马斯克与美国证券交易委员会(SEC)达成和解协议。马斯克必…

JVM指令详解(上)
文中提及的栈是虚拟机栈中的栈帧的操作数栈,本地变量表是栈帧中的本地变量表,如下图:/*** Author: qlq* Description* Date: 22:44 2018/9/25*/ public class MathTest {public static void main(String a[]){MathTest mathTest new MathTest();System.…

oracle修改时区无效,Oracle 时区问题
oracle中的tz_offset是用来返回给定时区与标准时区(UTC universal of time Coordinate 通用时间坐标)的偏移量,其参数可以是:1.一个合法的时区名2.一个离UTC的标准偏移量3.关键字SessionTimeZone或者是DB_timezone其中合法的时区名可以从系统视图V$TimeZ…

::operator new、sgi stl alloc、dlmalloc测试结果
注: 使用的dlmalloc为2.8.3版本使用GetTickCount(),测试1000000次的new/delete分配空间大小为2的幂,依次递增在Debug模式下sgi-stl alloc > dlmalloc > ::operator new在Release模式下dlmalloc > sgi-stl alloc > ::operator new…
假期快乐!超强面试资源等你Pick,先收藏!
整理 | Jane 出品 | AI科技大本营 【导读】准备面试不是一件简单的事情,本文的作者在过去一段时间先后参加 50 多次面试。过程是艰难的,但是在这个过程中也积累了一些非常有用的资源。今天 AI科技大本营就为大家整理了那些有价值的学习资源,…

oracle判断值是否为0的高数,SQLServer和Oracle的常用函数对比
数学函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 …

9月机器学习开源项目Top10
作者 | Mybridge译者 | 王天宇整理 | Jane出品 | AI科技大本营【导读】我们从过去一个月近 250 个有关机器学习的开源项目中,精心挑选出了最热门的 10 个。在挑选过程中,我们始终在各个项目之间作比较。Mybridge AI 基于大量的因素来估量项目的专业水平&…

翻译:CREATE DATABASE语句
本文为mariadb官方手册:CREATE DATABASE的译文。 原文:https://mariadb.com/kb/en/create-database/我提交到MariaDB官方手册的译文:https://mariadb.com/kb/zh-cn/create-database/ 语法 CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT …

Consultanting Service
在我所做的咨询顾问工作中最耗费精力的事情就是去客户那边提案,对于咨询公司来说,这个过程就像高考一样。 这里的提案指的是,咨询公司给企业做的报告或者方案的演示 。提案之所以重要,是因为它质量的好坏直接关系到客户是否会继续…

第三次组织架构变动背后,腾讯AI走向何方?
AI科技大本营注:在 9 月末一场轰轰烈烈的“甚至连腾讯人自己都是睡梦中得知”的组织架构大调整后,不少业内人士给出了对暴风雨中腾讯的上帝视角评价。据了解,此次腾讯组织架构调整,酝酿已久,在腾讯内部早已不是秘密。如…

使按钮响应回车键
定在<head></head>之间 <script language"javascript"event"onkeydown"for"document">if(event.keyCode13) { document.all(Button1).focus(); document.all(Button1).click(); }</script> 转载于:https://www.cnb…

oracle cusor游标,ORACLE CURSOR 游标详解
DECLAREsqlStr VARCHAR2(2000); --拼写sqlflag int; --判断是否存在col_name VARCHAR2(100); --字段名字tab_name VARCHAR2(100); --表名col_type VARCHAR2(100); --表名operator_str VARCHAR2(100) : ;FindUser VARCHAR2(50) :ERSAFETY; --要查…

【播放器SDK】Android如何实现固定竖屏播放视频
安卓的固定竖屏播放并不受手机是否开启旋转的限制,需要用户设置Activity为固定竖屏。目前带皮肤的播放器内部对竖屏播放视频做了一定的支持.用户使用相对比较简单. 带皮肤播放器 参考Demo代码FixedSkinActivity 1.在onCreate里面设置当前Activity为固定竖屏模式. se…

命令别名的设置alias,unalias
alias命令的作用是为系统中的命令设置别名,如果常用命令比较长,那么为其设置别名可以简化用户操作,例如为ls -l | more命令设置别名lm,这样只需要输入lm就可以得到和 ls -l | more相同的效果;为rm -i设置别名为rm,可以…
重磅!Facebook公布PyTorch 1.0预览版!
作者 | 琥珀 出品 | AI科技大本营(公众号ID:rgznai100) 今日,Facebook 宣布发布深度学习框架 PyTorch 1.0 开发者预览版,包括一些列工具和集成,使其与 Google Cloud、AWS、Azure 的机器学习服务更为兼容。…

cisco路由器视频下载
总共133M,我进行了两次压缩,才压缩到23M, 有拓扑图,对于新手学习非常有用。具体下载,我放到论坛上:有兴趣的网友,请到:http://bbs.51cto.com/viewthread.php?tid8652&extrapage%3D1转载于:https://blog.51cto.com/eskystar/2571

linux进程状态d状态,Linux下进程的状态
如下信息来自于命令man psHere are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process:D uninterruptible sleep (usually IO)R running or runnable (on run …