ServerBossEvent.java
net.minecraft.server.level.ServerBossEvent
信息
- 全限定名:net.minecraft.server.level.ServerBossEvent
- 类型:public class
- 包:net.minecraft.server.level
- 源码路径:src/main/java/net/minecraft/server/level/ServerBossEvent.java
- 起始行号:L15
- 继承:BossEvent
- 职责:
TODO
字段/常量
-
players- 类型:
Set<ServerPlayer> - 修饰符:
private final - 源码定位:
L16 - 说明:
TODO
- 类型:
-
unmodifiablePlayers- 类型:
Set<ServerPlayer> - 修饰符:
private final - 源码定位:
L17 - 说明:
TODO
- 类型:
-
visible- 类型:
boolean - 修饰符:
private - 源码定位:
L18 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ServerBossEvent(UUID id, Component name, BossEvent.BossBarColor color, BossEvent.BossBarOverlay overlay) @ L20
- 构造器名:ServerBossEvent
- 源码定位:L20
- 修饰符:public
参数:
- id: UUID
- name: Component
- color: BossEvent.BossBarColor
- overlay: BossEvent.BossBarOverlay
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void setProgress(float progress) @ L24
- 方法名:setProgress
- 源码定位:L24
- 返回类型:void
- 修饰符:public
参数:
- progress: float
说明:
TODO
public void setColor(BossEvent.BossBarColor color) @ L33
- 方法名:setColor
- 源码定位:L33
- 返回类型:void
- 修饰符:public
参数:
- color: BossEvent.BossBarColor
说明:
TODO
public void setOverlay(BossEvent.BossBarOverlay overlay) @ L42
- 方法名:setOverlay
- 源码定位:L42
- 返回类型:void
- 修饰符:public
参数:
- overlay: BossEvent.BossBarOverlay
说明:
TODO
public BossEvent setDarkenScreen(boolean darkenScreen) @ L51
- 方法名:setDarkenScreen
- 源码定位:L51
- 返回类型:BossEvent
- 修饰符:public
参数:
- darkenScreen: boolean
说明:
TODO
public BossEvent setPlayBossMusic(boolean playBossMusic) @ L62
- 方法名:setPlayBossMusic
- 源码定位:L62
- 返回类型:BossEvent
- 修饰符:public
参数:
- playBossMusic: boolean
说明:
TODO
public BossEvent setCreateWorldFog(boolean createWorldFog) @ L73
- 方法名:setCreateWorldFog
- 源码定位:L73
- 返回类型:BossEvent
- 修饰符:public
参数:
- createWorldFog: boolean
说明:
TODO
public void setName(Component name) @ L84
- 方法名:setName
- 源码定位:L84
- 返回类型:void
- 修饰符:public
参数:
- name: Component
说明:
TODO
private void broadcast(Function<BossEvent,ClientboundBossEventPacket> factory) @ L93
- 方法名:broadcast
- 源码定位:L93
- 返回类型:void
- 修饰符:private
参数:
- factory: Function<BossEvent,ClientboundBossEventPacket>
说明:
TODO
public void addPlayer(ServerPlayer player) @ L103
- 方法名:addPlayer
- 源码定位:L103
- 返回类型:void
- 修饰符:public
参数:
- player: ServerPlayer
说明:
TODO
public void removePlayer(ServerPlayer player) @ L109
- 方法名:removePlayer
- 源码定位:L109
- 返回类型:void
- 修饰符:public
参数:
- player: ServerPlayer
说明:
TODO
public void removeAllPlayers() @ L115
- 方法名:removeAllPlayers
- 源码定位:L115
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean isVisible() @ L123
- 方法名:isVisible
- 源码定位:L123
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public void setVisible(boolean visible) @ L127
- 方法名:setVisible
- 源码定位:L127
- 返回类型:void
- 修饰符:public
参数:
- visible: boolean
说明:
TODO
public Collection<ServerPlayer> getPlayers() @ L139
- 方法名:getPlayers
- 源码定位:L139
- 返回类型:Collection
- 修饰符:public
参数:
- 无
说明:
TODO
protected void setDirty() @ L143
- 方法名:setDirty
- 源码定位:L143
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
代码
public class ServerBossEvent extends BossEvent {
private final Set<ServerPlayer> players = Sets.newHashSet();
private final Set<ServerPlayer> unmodifiablePlayers = Collections.unmodifiableSet(this.players);
private boolean visible = true;
public ServerBossEvent(UUID id, Component name, BossEvent.BossBarColor color, BossEvent.BossBarOverlay overlay) {
super(id, name, color, overlay);
}
@Override
public void setProgress(float progress) {
if (progress != this.progress) {
super.setProgress(progress);
this.setDirty();
this.broadcast(ClientboundBossEventPacket::createUpdateProgressPacket);
}
}
@Override
public void setColor(BossEvent.BossBarColor color) {
if (color != this.color) {
super.setColor(color);
this.setDirty();
this.broadcast(ClientboundBossEventPacket::createUpdateStylePacket);
}
}
@Override
public void setOverlay(BossEvent.BossBarOverlay overlay) {
if (overlay != this.overlay) {
super.setOverlay(overlay);
this.setDirty();
this.broadcast(ClientboundBossEventPacket::createUpdateStylePacket);
}
}
@Override
public BossEvent setDarkenScreen(boolean darkenScreen) {
if (darkenScreen != this.darkenScreen) {
super.setDarkenScreen(darkenScreen);
this.setDirty();
this.broadcast(ClientboundBossEventPacket::createUpdatePropertiesPacket);
}
return this;
}
@Override
public BossEvent setPlayBossMusic(boolean playBossMusic) {
if (playBossMusic != this.playBossMusic) {
super.setPlayBossMusic(playBossMusic);
this.setDirty();
this.broadcast(ClientboundBossEventPacket::createUpdatePropertiesPacket);
}
return this;
}
@Override
public BossEvent setCreateWorldFog(boolean createWorldFog) {
if (createWorldFog != this.createWorldFog) {
super.setCreateWorldFog(createWorldFog);
this.setDirty();
this.broadcast(ClientboundBossEventPacket::createUpdatePropertiesPacket);
}
return this;
}
@Override
public void setName(Component name) {
if (!Objects.equal(name, this.name)) {
super.setName(name);
this.setDirty();
this.broadcast(ClientboundBossEventPacket::createUpdateNamePacket);
}
}
private void broadcast(Function<BossEvent, ClientboundBossEventPacket> factory) {
if (this.visible) {
ClientboundBossEventPacket packet = factory.apply(this);
for (ServerPlayer player : this.players) {
player.connection.send(packet);
}
}
}
public void addPlayer(ServerPlayer player) {
if (this.players.add(player) && this.visible) {
player.connection.send(ClientboundBossEventPacket.createAddPacket(this));
}
}
public void removePlayer(ServerPlayer player) {
if (this.players.remove(player) && this.visible) {
player.connection.send(ClientboundBossEventPacket.createRemovePacket(this.getId()));
}
}
public void removeAllPlayers() {
if (!this.players.isEmpty()) {
for (ServerPlayer player : Lists.newArrayList(this.players)) {
this.removePlayer(player);
}
}
}
public boolean isVisible() {
return this.visible;
}
public void setVisible(boolean visible) {
if (visible != this.visible) {
this.visible = visible;
this.setDirty();
for (ServerPlayer player : this.players) {
player.connection
.send(visible ? ClientboundBossEventPacket.createAddPacket(this) : ClientboundBossEventPacket.createRemovePacket(this.getId()));
}
}
}
public Collection<ServerPlayer> getPlayers() {
return this.unmodifiablePlayers;
}
protected void setDirty() {
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
ClientboundBossEventPacket.createAddPacket(), ClientboundBossEventPacket.createRemovePacket()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
参数/继承/返回值
- 引用位置: