Skip to content

fix: evita NPE in ItemBuilder.build() con placeholder dal valore null#19

Open
antoilmalvagio wants to merge 1 commit into
albemiglio:masterfrom
antoilmalvagio:fix/itembuilder-null-placeholder
Open

fix: evita NPE in ItemBuilder.build() con placeholder dal valore null#19
antoilmalvagio wants to merge 1 commit into
albemiglio:masterfrom
antoilmalvagio:fix/itembuilder-null-placeholder

Conversation

@antoilmalvagio

Copy link
Copy Markdown

Problema

ItemBuilder.build() sostituisce i placeholder con:

Object value = placeholders.getOrDefault(placeholder, "NULL");
setName(this.name.replace(placeholder, value.toString()));

getOrDefault restituisce il default "NULL" solo se la chiave è assente. Se la chiave è presente ma il valore mappato è null (es. addPlaceHolder("%x", possibileNull)), value è null e value.toString() lancia un NullPointerException.

Riscontrato in produzione da un plugin Novaverse (GUI che passava OfflinePlayer.getName() null).

Fix

Il loop ora itera su entrySet() e sostituisce i valori null con il sentinel "NULL", evitando l'NPE (e la doppia lookup key+get). Comportamento retro-compatibile: un placeholder null ora rende "NULL" invece di crashare.

getOrDefault(placeholder, "NULL") protegge solo dalla chiave assente: se il valore mappato è null, value.toString() lanciava NullPointerException. Ora il loop itera su entrySet e sostituisce i valori null con il sentinel "NULL", evitando l'NPE e la doppia lookup key+get.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant