zh_cn:tutorial:propertydelegates
Differences
This shows you the differences between two versions of the page.
zh_cn:tutorial:propertydelegates [2023/02/03 02:47] – 创建了zh_cn:tutorial:propertydelegates页面 hanatomizu | zh_cn:tutorial:propertydelegates [2023/02/07 09:21] (current) – solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
=====使用 PropertyDelegates 同步整形数据===== | =====使用 PropertyDelegates 同步整形数据===== | ||
- | **PropertyDelegates**:'' | + | **PropertyDelegate**:'' |
- | 在这章教程中,我们将会同步客户端和服务器之间的整型值,比如熔炉熔炼进度。 | + | 在这章教程中,我们将会同步客户端和服务器之间的整型值,比如原版熔炉熔炼进度。 |
- | 为了理解这篇教程,你需要先阅读 [[zh_cn: | + | 要理解这篇教程,你需要先阅读 [[zh_cn: |
- | 为了减小复杂性,在这章教程中不会再次使用 [[zh_cn: | + | 为了减小复杂性,这章教程不再使用 [[zh_cn: |
- | =====BlockEntity===== | + | ===== BlockEntity ===== |
由于 Block 类完全不需要更改,所以我们把它放在这里。 | 由于 Block 类完全不需要更改,所以我们把它放在这里。 | ||
- | 我们的 '' | + | 我们的 '' |
<code java [enable_line_numbers=true] BoxBlockEnity.java> | <code java [enable_line_numbers=true] BoxBlockEnity.java> | ||
Line 19: | Line 19: | ||
public class BoxBlockEntity extends BlockEntity implements NamedScreenHandlerFactory, | public class BoxBlockEntity extends BlockEntity implements NamedScreenHandlerFactory, | ||
private final DefaultedList< | private final DefaultedList< | ||
- | // 这是我们希望同步的整型,它每 tick 会增加 1。 | + | // 这是我们希望同步的整型,每刻会增加 1。 |
private int syncedInt; | private int syncedInt; | ||
- | // PropertyDelegate 是一个接口(Ingterface),我们将在这里使用内联(Inline)实现。 | + | // PropertyDelegate 是一个接口,我们将在这里使用内联实现。 |
// 它通常可以包含多个整型作为索引标志的数据,但是在本例中只有一个整型 | // 它通常可以包含多个整型作为索引标志的数据,但是在本例中只有一个整型 | ||
private final PropertyDelegate propertyDelegate = new PropertyDelegate() { | private final PropertyDelegate propertyDelegate = new PropertyDelegate() { | ||
Line 47: | Line 47: | ||
- | // 返回 | + | // 来自 |
| | ||
@Override | @Override | ||
Line 55: | Line 55: | ||
} | } | ||
- | // | + | // |
@Override | @Override | ||
Line 62: | Line 62: | ||
// 只有服务器在开始时拥有物品栏,这将会在 ScreenHandler 中同步到客户端 | // 只有服务器在开始时拥有物品栏,这将会在 ScreenHandler 中同步到客户端 | ||
- | // 类似于物品栏:服务器获得 PropertyDelegate 并将其直接给 screen handler 的服务器实例 | + | // 类似于物品栏:服务器获得 PropertyDelegate 并将其直接给 screen handler 的服务器实例 |
return new BoxScreenHandler(syncId, | return new BoxScreenHandler(syncId, | ||
} | } | ||
Line 72: | Line 72: | ||
} | } | ||
- | // 每个 tick 增加一个同步的整型,我们只是处于演示目的在服务器上这么做。 | + | // 每刻增加一个同步的整型,我们仅在服务器上这么做,从而用于演示。 |
@Override | @Override | ||
public void tick() { | public void tick() { | ||
Line 89: | Line 89: | ||
PropertyDelegate propertyDelegate; | PropertyDelegate propertyDelegate; | ||
- | // 当服务器想要打开 screenHandler 时,这个构造函数将会在客户端被调用 | + | // 当服务器想要打开 screenHandler 时,客户端就会调用这个构造函数 |
- | // 客户端将调用一个带有空的物品栏的父级构造函数和 screenHandler 将自动同步这个空的物品栏到服务器上 | + | // 客户端将调用父级构造函数,其中物品栏是空的。screenHandler 将自动将这个空的物品栏同步到服务器上 |
- | // 就像是于物品栏,客户端将分配一个空的 propertyDelegate 并且它将自动与服务器同步 | + | // 类似于物品栏,客户端将分配一个空的 propertyDelegate 并且它将自动与服务器同步 |
public BoxScreenHandler(int syncId, PlayerInventory playerInventory) { | public BoxScreenHandler(int syncId, PlayerInventory playerInventory) { | ||
Line 132: | Line 132: | ||
=====使用 Screen 显示信息===== | =====使用 Screen 显示信息===== | ||
- | 当屏幕在其构造函数中获得 ScreenHandler 时,我们可以从上面访问 property delegates ,并可以在屏幕上显示整型。 | + | 当屏幕在其构造函数中获得 ScreenHandler 时,我们可以从上面访问 property delegates,并可以在屏幕上渲染这个整数。 |
<code java [enable_line_numbers=true]> | <code java [enable_line_numbers=true]> | ||
Line 170: | Line 170: | ||
=====最后===== | =====最后===== | ||
- | 由于 '' | + | 由于 '' |
[[https:// | [[https:// | ||
如果您想要一个更现实的例子,您可以去看看 '' | 如果您想要一个更现实的例子,您可以去看看 '' |
zh_cn/tutorial/propertydelegates.txt · Last modified: 2023/02/07 09:21 by solidblock