Skip to content

Commit

Permalink
BlockData - add cloner (#6829)
Browse files Browse the repository at this point in the history
* BukkitClasses - add cloner for BlockData

* Add regression test for #6829

* Fix error message in BlockDataNotCloned6829

---------

Co-authored-by: Pikachu920 <28607612+Pikachu920@users.noreply.github.com>
Co-authored-by: sovdee <10354869+sovdeeth@users.noreply.github.com>
  • Loading branch information
3 people authored Jul 1, 2024
1 parent a4f38d2 commit 13b230c
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ public boolean mustSyncDeserialization() {
protected boolean canBeInstantiated() {
return false;
}
}));
}).cloner(BlockData::clone));

Classes.registerClass(new ClassInfo<>(Location.class, "location")
.user("locations?")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/**
* This file is part of Skript.
*
* Skript is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Skript is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Skript. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright Peter Güttinger, SkriptLang team and contributors
*/
package org.skriptlang.skript.test.tests.regression;

import ch.njol.skript.lang.Effect;
import ch.njol.skript.lang.TriggerItem;
import ch.njol.skript.lang.util.ContextlessEvent;
import ch.njol.skript.test.runner.SkriptJUnitTest;
import ch.njol.skript.variables.Variables;
import org.bukkit.block.data.type.Tripwire;
import org.bukkit.event.Event;
import org.junit.Assert;
import org.junit.Test;

import java.util.Objects;

public class BlockDataNotCloned6829 extends SkriptJUnitTest {

public void run(String unparsedEffect, Event event) {
Effect effect = Effect.parse(unparsedEffect, "Can't understand this effect: " + unparsedEffect);
if (effect == null)
throw new IllegalStateException();
TriggerItem.walk(effect, event);
}

@Test
public void test() {
Event event = ContextlessEvent.get();
run("set {_original tripwire} to tripwire[]", event);
run("set {_another tripwire} to {_original tripwire}", event);
Tripwire originalTripwire = (Tripwire) Objects.requireNonNull(Variables.getVariable("original tripwire", event, true));
Tripwire anotherTripwire = (Tripwire) Objects.requireNonNull(Variables.getVariable("another tripwire", event, true));
anotherTripwire.setDisarmed(true);
Assert.assertFalse(originalTripwire.isDisarmed());
}

}

0 comments on commit 13b230c

Please sign in to comment.