Merge pull request #721 from WinDanesz/1.12.2-PR-10-02

Fixes wizards being stuck in a continuous, client-side only spellcast…
This commit is contained in:
Electroblob
2021-10-03 18:10:51 +01:00
committed by GitHub
2 changed files with 27 additions and 20 deletions
@@ -68,13 +68,15 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity
/** Data parameter for the wizard's element. */ /** Data parameter for the wizard's element. */
private static final DataParameter<Integer> ELEMENT = EntityDataManager.createKey(EntityEvilWizard.class, private static final DataParameter<Integer> ELEMENT = EntityDataManager.createKey(EntityEvilWizard.class,
DataSerializers.VARINT); DataSerializers.VARINT);
/** Data parameters for the wizard's current continuous spell. */
private static final DataParameter<String> CONTINUOUS_SPELL = EntityDataManager.createKey(EntityEvilWizard.class, DataSerializers.STRING);
private static final DataParameter<Integer> SPELL_COUNTER = EntityDataManager.createKey(EntityEvilWizard.class, DataSerializers.VARINT);
/** The resource location for the evil wizard's loot table. */ /** The resource location for the evil wizard's loot table. */
private static final ResourceLocation LOOT_TABLE = new ResourceLocation(Wizardry.MODID, "entities/evil_wizard"); private static final ResourceLocation LOOT_TABLE = new ResourceLocation(Wizardry.MODID, "entities/evil_wizard");
// Field implementations // Field implementations
private List<Spell> spells = new ArrayList<Spell>(4); private List<Spell> spells = new ArrayList<Spell>(4);
private Spell continuousSpell;
private int spellCounter;
public EntityEvilWizard(World world){ public EntityEvilWizard(World world){
@@ -93,6 +95,8 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity
super.entityInit(); super.entityInit();
this.dataManager.register(HEAL_COOLDOWN, -1); this.dataManager.register(HEAL_COOLDOWN, -1);
this.dataManager.register(ELEMENT, -1); this.dataManager.register(ELEMENT, -1);
this.dataManager.register(CONTINUOUS_SPELL, "ebwizardry:none");
this.dataManager.register(SPELL_COUNTER, 0);
} }
@Override @Override
@@ -168,23 +172,23 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity
} }
@Override @Override
public void setContinuousSpell(Spell spell){ public void setContinuousSpell(Spell spell) {
this.continuousSpell = spell; this.dataManager.set(CONTINUOUS_SPELL, spell.getRegistryName().toString());
} }
@Override @Override
public Spell getContinuousSpell(){ public Spell getContinuousSpell() {
return this.continuousSpell; return Spell.get(this.dataManager.get(CONTINUOUS_SPELL));
} }
@Override @Override
public void setSpellCounter(int count){ public void setSpellCounter(int count) {
spellCounter = count; this.dataManager.set(SPELL_COUNTER, count);
} }
@Override @Override
public int getSpellCounter(){ public int getSpellCounter() {
return spellCounter; return this.dataManager.get(SPELL_COUNTER);
} }
@Override @Override
@@ -81,11 +81,12 @@ public class EntityWizard extends EntityCreature implements INpc, IMerchant, ISp
private static final DataParameter<Integer> HEAL_COOLDOWN = EntityDataManager.createKey(EntityWizard.class, DataSerializers.VARINT); private static final DataParameter<Integer> HEAL_COOLDOWN = EntityDataManager.createKey(EntityWizard.class, DataSerializers.VARINT);
/** Data parameter for the wizard's element. */ /** Data parameter for the wizard's element. */
private static final DataParameter<Integer> ELEMENT = EntityDataManager.createKey(EntityWizard.class, DataSerializers.VARINT); private static final DataParameter<Integer> ELEMENT = EntityDataManager.createKey(EntityWizard.class, DataSerializers.VARINT);
/** Data parameters for the wizard's current continuous spell. */
private static final DataParameter<String> CONTINUOUS_SPELL = EntityDataManager.createKey(EntityEvilWizard.class, DataSerializers.STRING);
private static final DataParameter<Integer> SPELL_COUNTER = EntityDataManager.createKey(EntityEvilWizard.class, DataSerializers.VARINT);
// Field implementations // Field implementations
private List<Spell> spells = new ArrayList<Spell>(4); private List<Spell> spells = new ArrayList<Spell>(4);
private Spell continuousSpell;
private int spellCounter;
/** A set of the positions of the blocks that are part of this wizard's tower. */ /** A set of the positions of the blocks that are part of this wizard's tower. */
private Set<BlockPos> towerBlocks; private Set<BlockPos> towerBlocks;
@@ -102,6 +103,8 @@ public class EntityWizard extends EntityCreature implements INpc, IMerchant, ISp
super.entityInit(); super.entityInit();
this.dataManager.register(HEAL_COOLDOWN, -1); this.dataManager.register(HEAL_COOLDOWN, -1);
this.dataManager.register(ELEMENT, 0); this.dataManager.register(ELEMENT, 0);
this.dataManager.register(CONTINUOUS_SPELL, "ebwizardry:none");
this.dataManager.register(SPELL_COUNTER, 0);
} }
@Override @Override
@@ -182,23 +185,23 @@ public class EntityWizard extends EntityCreature implements INpc, IMerchant, ISp
} }
@Override @Override
public void setContinuousSpell(Spell spell){ public void setContinuousSpell(Spell spell) {
this.continuousSpell = spell; this.dataManager.set(CONTINUOUS_SPELL, spell.getRegistryName().toString());
} }
@Override @Override
public Spell getContinuousSpell(){ public Spell getContinuousSpell() {
return this.continuousSpell; return Spell.get(this.dataManager.get(CONTINUOUS_SPELL));
} }
@Override @Override
public void setSpellCounter(int count){ public void setSpellCounter(int count) {
spellCounter = count; this.dataManager.set(SPELL_COUNTER, count);
} }
@Override @Override
public int getSpellCounter(){ public int getSpellCounter() {
return spellCounter; return this.dataManager.get(SPELL_COUNTER);
} }
@Override @Override