|
211 | 211 | } catch (Throwable throwable) {
|
212 | 212 | CrashReport crashreport = CrashReport.forThrowable(throwable, "Ticking player");
|
213 | 213 | CrashReportCategory crashreportcategory = crashreport.addCategory("Player being ticked");
|
214 |
| -@@ -563,19 +_,62 @@ |
| 214 | +@@ -563,16 +_,37 @@ |
215 | 215 | }
|
216 | 216 |
|
217 | 217 | private void updateScoreForCriteria(ObjectiveCriteria p_9105_, int p_9106_) {
|
|
222 | 222 | });
|
223 | 223 | }
|
224 | 224 |
|
| 225 | ++ //Ketting start - mixin |
| 226 | ++ private @Nullable String die$deathMessage; |
| 227 | ++ private String die$defaultDeathMessage; |
| 228 | ++ //Ketting end |
225 | 229 | public void die(DamageSource p_9035_) {
|
226 | 230 | this.gameEvent(GameEvent.ENTITY_DIE);
|
227 | 231 | + if (net.minecraftforge.common.ForgeHooks.onLivingDeath(this, p_9035_)) return;
|
228 |
| - boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES); |
229 |
| -- if (flag) { |
230 |
| -- Component component = this.getCombatTracker().getDeathMessage(); |
231 |
| -- this.connection.send(new ClientboundPlayerCombatKillPacket(this.getId(), component), PacketSendListener.exceptionallySend(() -> { |
232 | 232 | + //Ketting start
|
233 | 233 | + if (this.isRemoved()) return;
|
234 |
| -+ boolean keepInventory = this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) || this.isSpectator(); |
235 |
| -+ Inventory copyInv; |
236 |
| -+ if (keepInventory) { |
237 |
| -+ copyInv = this.getInventory(); |
238 |
| -+ } else { |
239 |
| -+ copyInv = new Inventory(this); |
240 |
| -+ copyInv.replaceWith(this.getInventory()); |
241 |
| -+ } |
242 |
| -+ this.dropAllDeathLoot(p_9035_); |
243 | 234 | +
|
244 |
| -+ Component defaultMessage = this.getCombatTracker().getDeathMessage(); |
245 |
| -+ String deathmessage = defaultMessage.getString(); |
246 |
| -+ |
247 |
| -+ List<org.bukkit.inventory.ItemStack> loot = new java.util.ArrayList<>(); |
248 |
| -+ Collection<ItemEntity> drops = this.captureDrops(null); |
249 |
| -+ |
250 |
| -+ if (drops != null) { |
251 |
| -+ for (ItemEntity entity : drops) { |
252 |
| -+ org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack craftItemStack = org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack.asCraftMirror(entity.getItem()); |
253 |
| -+ loot.add(craftItemStack); |
254 |
| -+ } |
| 235 | ++ die$defaultDeathMessage = this.getCombatTracker().getDeathMessage().getString(); |
| 236 | ++ if (!this.isSpectator()) { |
| 237 | ++ this.dropAllDeathLoot(p_9035_); |
| 238 | ++ die$deathMessage = this.handlePlayerDeath$event.getDeathMessage(); |
255 | 239 | + }
|
256 |
| -+ this.keepLevel = keepInventory; |
| 240 | + boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES); |
| 241 | +- if (flag) { |
| 242 | +- Component component = this.getCombatTracker().getDeathMessage(); |
| 243 | ++ if (die$deathMessage != null && die$deathMessage.length() > 0 && flag) { |
| 244 | ++ Component component; |
257 | 245 | +
|
258 |
| -+ Inventory recapturedDrops = new Inventory(this); //recapture drops that got added back to the inventory (eg. soulbound items) |
259 |
| -+ if (!keepInventory) { |
260 |
| -+ recapturedDrops.replaceWith(this.getInventory()); |
261 |
| -+ this.getInventory().replaceWith(copyInv); |
262 |
| -+ } |
263 |
| -+ org.bukkit.event.entity.PlayerDeathEvent event = org.bukkit.craftbukkit.v1_20_R1.event.CraftEventFactory.callPlayerDeathEvent(this, loot, deathmessage, keepInventory); |
264 |
| -+ if (this.containerMenu != this.inventoryMenu) { |
265 |
| -+ this.closeContainer(); |
266 |
| -+ } |
267 |
| -+ String deathMessage = event.getDeathMessage(); |
268 |
| -+ if (deathMessage != null && !deathMessage.isEmpty() && flag) { |
269 |
| -+ Component itextcomponent; |
270 |
| -+ if (deathMessage.equals(deathmessage)) { |
271 |
| -+ itextcomponent = this.getCombatTracker().getDeathMessage(); |
| 246 | ++ if (die$deathMessage.equals(die$defaultDeathMessage)) { |
| 247 | ++ component = this.getCombatTracker().getDeathMessage(); |
272 | 248 | + } else {
|
273 |
| -+ itextcomponent = org.bukkit.craftbukkit.v1_20_R1.util.CraftChatMessage.fromStringOrNull(deathMessage); |
| 249 | ++ component = org.bukkit.craftbukkit.v1_20_R1.util.CraftChatMessage.fromStringOrNull(die$deathMessage); |
274 | 250 | + }
|
275 |
| -+ this.connection.send(new ClientboundPlayerCombatKillPacket(this.getId(), itextcomponent), PacketSendListener.exceptionallySend(() -> { |
| 251 | ++ //Ketting end |
| 252 | + this.connection.send(new ClientboundPlayerCombatKillPacket(this.getId(), component), PacketSendListener.exceptionallySend(() -> { |
276 | 253 | int i = 256;
|
277 |
| -- String s = component.getString(256); |
278 |
| -+ String s = itextcomponent.getString(256); |
279 |
| - Component component1 = Component.translatable("death.attack.message_too_long", Component.literal(s).withStyle(ChatFormatting.YELLOW)); |
280 |
| - Component component2 = Component.translatable("death.attack.even_more_magic", this.getDisplayName()).withStyle((p_143420_) -> { |
281 |
| - return p_143420_.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, component1)); |
282 |
| -@@ -585,12 +_,12 @@ |
283 |
| - Team team = this.getTeam(); |
284 |
| - if (team != null && team.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { |
285 |
| - if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { |
286 |
| -- this.server.getPlayerList().broadcastSystemToTeam(this, component); |
287 |
| -+ this.server.getPlayerList().broadcastSystemToTeam(this, itextcomponent); |
288 |
| - } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OWN_TEAM) { |
289 |
| -- this.server.getPlayerList().broadcastSystemToAllExceptTeam(this, component); |
290 |
| -+ this.server.getPlayerList().broadcastSystemToAllExceptTeam(this, itextcomponent); |
291 |
| - } |
292 |
| - } else { |
293 |
| -- this.server.getPlayerList().broadcastSystemMessage(component, false); |
294 |
| -+ this.server.getPlayerList().broadcastSystemMessage(itextcomponent, false); |
295 |
| - } |
296 |
| - } else { |
297 |
| - this.connection.send(new ClientboundPlayerCombatKillPacket(this.getId(), CommonComponents.EMPTY)); |
298 |
| -@@ -601,11 +_,16 @@ |
| 254 | + String s = component.getString(256); |
| 255 | +@@ -601,11 +_,19 @@ |
299 | 256 | this.tellNeutralMobsThatIDied();
|
300 | 257 | }
|
301 | 258 |
|
302 |
| -- if (!this.isSpectator()) { |
303 |
| -- this.dropAllDeathLoot(p_9035_); |
304 |
| -+ this.dropExperience(); |
305 |
| -+ |
306 |
| -+ if (!event.getKeepInventory()) { |
307 |
| -+ this.getInventory().clearContent(); |
308 |
| -+ this.getInventory().replaceWith(recapturedDrops); //place the recaptured drops back into the inventory |
| 259 | ++ //Ketting start - moved up |
| 260 | ++ /* |
| 261 | + if (!this.isSpectator()) { |
| 262 | + this.dropAllDeathLoot(p_9035_); |
309 | 263 | }
|
310 |
| -+ this.setCamera(this); |
311 |
| -+ ((org.bukkit.craftbukkit.v1_20_R1.scoreboard.CraftScoreboardManager) org.bukkit.Bukkit.getScoreboardManager()).getScoreboardScores(ObjectiveCriteria.DEATH_COUNT, this.getScoreboardName(), Score::increment); |
| 264 | ++ */ |
312 | 265 | + //Ketting end
|
| 266 | ++ this.setCamera(this); //Ketting - CraftBukkit: Remove spectated target |
313 | 267 |
|
314 | 268 | - this.getScoreboard().forAllObjectives(ObjectiveCriteria.DEATH_COUNT, this.getScoreboardName(), Score::increment);
|
| 269 | ++ //Ketting start - replace with CB variant |
| 270 | ++ ((org.bukkit.craftbukkit.v1_20_R1.scoreboard.CraftScoreboardManager) org.bukkit.Bukkit.getScoreboardManager()).getScoreboardScores(ObjectiveCriteria.DEATH_COUNT, this.getScoreboardName(), Score::increment); |
| 271 | ++ //this.getScoreboard().forAllObjectives(ObjectiveCriteria.DEATH_COUNT, this.getScoreboardName(), Score::increment); |
| 272 | ++ //Ketting end |
315 | 273 | LivingEntity livingentity = this.getKillCredit();
|
316 | 274 | if (livingentity != null) {
|
317 | 275 | this.awardStat(Stats.ENTITY_KILLED_BY.get(livingentity.getType()));
|
|
0 commit comments