Merge boy0001/FastAsyncWorldEdit

This commit is contained in:
Jesse Boyd 2018-09-14 02:42:55 +10:00
parent e3172e08b8
commit 8ed67f66ad
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F
9 changed files with 109 additions and 47 deletions

View File

@ -1,5 +1,6 @@
package com.thevoxelbox.voxelsniper.brush; package com.thevoxelbox.voxelsniper.brush;
import com.sk89q.worldedit.world.block.BlockTypes;
import com.thevoxelbox.voxelsniper.Message; import com.thevoxelbox.voxelsniper.Message;
import com.thevoxelbox.voxelsniper.SnipeData; import com.thevoxelbox.voxelsniper.SnipeData;
import com.thevoxelbox.voxelsniper.Undo; import com.thevoxelbox.voxelsniper.Undo;

View File

@ -65,7 +65,7 @@ public class UnderlayBrush extends PerformBrush
{ {
for (int d = 0; (d < this.depth); d++) for (int d = 0; (d < this.depth); d++)
{ {
if (!this.clampY(this.getTargetBlock().getX() + x, y + d, this.getTargetBlock().getZ() + z).isEmpty() if (!this.clampY(this.getTargetBlock().getX() + x, y + d, this.getTargetBlock().getZ() + z).isEmpty())
{ {
this.current.perform(this.clampY(this.getTargetBlock().getX() + x, y + d, this.getTargetBlock().getZ() + z)); // fills down as many layers as you specify in this.current.perform(this.clampY(this.getTargetBlock().getX() + x, y + d, this.getTargetBlock().getZ() + z)); // fills down as many layers as you specify in
// parameters // parameters

View File

@ -23,7 +23,7 @@ public class Settings extends Config {
@Final @Final
public String PLATFORM; // These values are set from FAWE before loading public String PLATFORM; // These values are set from FAWE before loading
@Comment({"Options: de, ru, tr", @Comment({"Options: de, es, fr, nl, ru, tr",
"Create a PR to contribute a translation: https://github.com/boy0001/FastAsyncWorldedit/new/master/core/src/main/resources",}) "Create a PR to contribute a translation: https://github.com/boy0001/FastAsyncWorldedit/new/master/core/src/main/resources",})
public String LANGUAGE = ""; public String LANGUAGE = "";
@Comment({"Enable or disable automatic updates", @Comment({"Enable or disable automatic updates",

View File

@ -1785,21 +1785,16 @@ public class EditSession extends AbstractDelegateExtent implements HasFaweQueue,
if (region instanceof CuboidRegion) { if (region instanceof CuboidRegion) {
return this.makeCuboidWalls(region, pattern); return this.makeCuboidWalls(region, pattern);
} else { } else {
final int minY = region.getMinimumPoint().getBlockY(); for (BlockVector position : region) {
final int maxY = region.getMaximumPoint().getBlockY(); int x = position.getBlockX();
final ArbitraryShape shape = new RegionShape(region) { int y = position.getBlockY();
@Override int z = position.getBlockZ();
public BlockStateHolder getMaterial(final int x, final int y, final int z, final BlockStateHolder defaultMaterial) { if (!region.contains(x, z + 1) || !region.contains(x, z - 1) || !region.contains(x + 1, z) || !region.contains(x - 1, z)) {
if ((y > maxY) || (y < minY)) { setBlock(position, pattern);
// Put holes into the floor and ceiling by telling ArbitraryShape that the shape goes on outside the region
return defaultMaterial;
}
return super.getMaterial(x, y, z, defaultMaterial);
} }
}; }
return shape.generate(this, pattern, true);
} }
return changes;
} }
/** /**

View File

@ -293,6 +293,54 @@ public class Polygonal2DRegion extends AbstractRegion implements FlatRegion {
recalculate(); recalculate();
} }
@Override
public boolean contains(int targetX, int targetZ) {
boolean inside = false;
int npoints = points.size();
int xNew, zNew;
int xOld, zOld;
int x1, z1;
int x2, z2;
long crossproduct;
int i;
xOld = points.get(npoints - 1).getBlockX();
zOld = points.get(npoints - 1).getBlockZ();
for (i = 0; i < npoints; ++i) {
xNew = points.get(i).getBlockX();
zNew = points.get(i).getBlockZ();
//Check for corner
if (xNew == targetX && zNew == targetZ) {
return true;
}
if (xNew > xOld) {
x1 = xOld;
x2 = xNew;
z1 = zOld;
z2 = zNew;
} else {
x1 = xNew;
x2 = xOld;
z1 = zNew;
z2 = zOld;
}
if (x1 <= targetX && targetX <= x2) {
crossproduct = ((long) targetZ - (long) z1) * (long) (x2 - x1)
- ((long) z2 - (long) z1) * (long) (targetX - x1);
if (crossproduct == 0) {
if ((z1 <= targetZ) == (targetZ <= z2)) return true; //on edge
} else if (crossproduct < 0 && (x1 != targetX)) {
inside = !inside;
}
}
xOld = xNew;
zOld = zNew;
}
return inside;
}
@Override @Override
public boolean contains(Vector position) { public boolean contains(Vector position) {
return contains(points, minY, maxY, position); return contains(points, minY, maxY, position);

View File

@ -64,7 +64,7 @@ public class FlatRegionIterator implements Iterator<Vector2D> {
} }
private void forward() { private void forward() {
while (hasNext() && !region.contains(new Vector(nextX, y, nextZ))) { while (hasNext() && !region.contains(nextX, y, nextZ)) {
forwardOne(); forwardOne();
} }
} }

View File

@ -339,11 +339,6 @@ public class Location extends Vector {
@Override @Override
public int hashCode() { public int hashCode() {
int result = extent.hashCode(); return super.hashCode();
result = 31 * result + this.hashCode();
result = 31 * result + Float.floatToIntBits(this.pitch);
result = 31 * result + Float.floatToIntBits(this.yaw);
return result;
} }
} }

View File

@ -1,6 +1,6 @@
#Adjusted and updated by NotMyFault #Updated by NotMyFault
info: info:
prefix: '&4&lFAWE:&f&7' prefix: '&8(&4&lFAWE&8)&r&7'
schematic_pasting: '&7Die Schematic wird eingefügt. Dies kann nicht rückgängig gemacht schematic_pasting: '&7Die Schematic wird eingefügt. Dies kann nicht rückgängig gemacht
werden.' werden.'
updated_lighting_selection: '&7Das Licht wird in %s0 Chunks aktualisiert. (Es kann updated_lighting_selection: '&7Das Licht wird in %s0 Chunks aktualisiert. (Es kann
@ -163,9 +163,13 @@ worldedit:
brush_target_mask_set: Zielmaske auf %s0 gesetzt brush_target_mask_set: Zielmaske auf %s0 gesetzt
brush_target_offset_set: Zielausrichtung auf %s0 gesetzt brush_target_offset_set: Zielausrichtung auf %s0 gesetzt
brush_equipped: Brush %s0 ausgerüstet brush_equipped: Brush %s0 ausgerüstet
brush_line_primary: Punkt %s0 hinzugefügt, klicke auf eine andere Position um die Linie zu erstellen brush_line_primary: Punkt %s0 hinzugefügt, klicke auf eine andere Position um
die Linie zu erstellen
brush_line_secondary: Spline erstellt brush_line_secondary: Spline erstellt
brush_spline_primary_2: Position hinzugefügt, klicke auf die gleiche Postiion um zu beginnen! brush_spline_primary_2: Position hinzugefügt, klicke auf die gleiche Position
um zu beginnen!
brush_catenary_direction: Punkt %s0 hinzugefügt, klicke in die Richtung in der
du die spline generieren willst
rollback: rollback:
rollback_element: annulliere %s0 rollback_element: annulliere %s0
tool: tool:
@ -247,7 +251,8 @@ worldedit:
navigation: navigation:
navigation_wand_error: '&cNichts zu durchqueren' navigation_wand_error: '&cNichts zu durchqueren'
anvil: anvil:
world_is_loaded: Die Welt sollte nicht in Benutzung sein währen der Ausführung. Entlade die Welt, oder überschreibe diese mit -f (vorher speichern) world_is_loaded: Die Welt sollte nicht in Benutzung sein währen der Ausführung.
Entlade die Welt, oder überschreibe diese mit -f (vorher speichern)
help: help:
command_clarifying_bracket: '&7Klammer für&c%s0 wurde hinzugefügt' command_clarifying_bracket: '&7Klammer für&c%s0 wurde hinzugefügt'
help_suggest: '&7%s0 konnte nicht gefunden werden. Versuche &c%s1 &7' help_suggest: '&7%s0 konnte nicht gefunden werden. Versuche &c%s1 &7'
@ -274,10 +279,10 @@ cancel:
worldedit_cancel_reason_no_region: Keine erlaubte Region (Ignorieren mit /wea) worldedit_cancel_reason_no_region: Keine erlaubte Region (Ignorieren mit /wea)
worldedit_failed_load_chunk: '&cÜberspringe das Laden von Chunk: &7%s0;%s1&c. Versuche worldedit_failed_load_chunk: '&cÜberspringe das Laden von Chunk: &7%s0;%s1&c. Versuche
chunk-wait zu erhöhen.' chunk-wait zu erhöhen.'
worldedit_cancel_reason_confirm: '&7Deine Selektion ist zu groß (%s0 -> %s1). Benutze &c//confirm worldedit_cancel_reason_confirm: '&7Deine Selektion ist zu groß (%s0 -> %s1). Benutze
&7um &c%s2 auszuführen' &c//confirm &7um &c%s2 auszuführen'
worldedit_cancel_reason_outside_level: Außerhalb der Welt worldedit_cancel_reason_outside_level: Außerhalb der Welt
worldedit_cancel_reason_outside_region: Außerhalb erlaubter Region (Bypass mit /wea, worldedit_cancel_reason_outside_region: Außerhalb erlaubter Region (Umgehe mit /wea,
oder deaktiviere `region-restrictions` in der config.yml) oder deaktiviere `region-restrictions` in der config.yml)
history: {} history: {}
navigation: navigation:
@ -312,7 +317,7 @@ tips:
tip_download: 'Tipp: Du kannst deine Zwischenablage mit `//download` herunterladen' tip_download: 'Tipp: Du kannst deine Zwischenablage mit `//download` herunterladen'
tip_sel_list: 'Tipp: Liste die verschiedenen Selektoren auf mit &c//sel list' tip_sel_list: 'Tipp: Liste die verschiedenen Selektoren auf mit &c//sel list'
tip_select_connected: 'Tipp: Wähle alle verbundenen Blöcke mit //sel fuzzy' tip_select_connected: 'Tipp: Wähle alle verbundenen Blöcke mit //sel fuzzy'
tip_set_pos1: 'Tipp: Nutze pos1 als Muster &c//set pos1' tip_set_pos1: 'Tipp: Nutze Position1 als Muster &c//set pos1'
tip_farwand: 'Tipp: Markiere entferne Blöcke mit &c//farwand' tip_farwand: 'Tipp: Markiere entferne Blöcke mit &c//farwand'
tip_fast: '&7Tipp: Platziere schnell und ohne Undo-Historie &c//fast' tip_fast: '&7Tipp: Platziere schnell und ohne Undo-Historie &c//fast'
tip_mask: '&7Tipp: Setze eine Globale Zielmaske mit &c/gmask' tip_mask: '&7Tipp: Setze eine Globale Zielmaske mit &c/gmask'
@ -338,5 +343,16 @@ tips:
tip_lazycut: '&7Tipp: Es ist sicherer den Befehl &c//lazycut zu verwenden.' tip_lazycut: '&7Tipp: Es ist sicherer den Befehl &c//lazycut zu verwenden.'
tip_regen_0: 'Tipp: Benutze ein Biom mit /regen [biome]' tip_regen_0: 'Tipp: Benutze ein Biom mit /regen [biome]'
tip_regen_1: 'Tipp: Benutzte einen Seed mit /regen [biome] [seed]' tip_regen_1: 'Tipp: Benutzte einen Seed mit /regen [biome] [seed]'
tip_biome_pattern: 'Tipp: Das &c#biome[forest]&7 Muster kann in jedem Befehl genutzt werden' tip_biome_pattern: 'Tipp: Das &c#biome[forest]&7 Muster kann in jedem Befehl genutzt
werden'
tip_biome_mask: 'Tipp: Beschränke ein Biom mit der `$jungle` Maske' tip_biome_mask: 'Tipp: Beschränke ein Biom mit der `$jungle` Maske'
tip_discord: Du benötigst Hilfe mit FAWE? https://discord.gg/ngZCzbU
tip_replace_regex: '&7Tipp: Ersetze mit regex:&c //replace .*_log <pattern>'
tip_replace_regex_2: '&7Tipp: Ersetze mit regex:&c //replace .*stairs[facing=(north|south)]
<pattern>'
tip_replace_regex_3: '&7Tipp: Ersetze mit den folgenden Operatoren:&c //replace
water[level>2] sand'
tip_replace_regex_4: '&7Tipp: Ersetze mit den folgenden Operatoren:&c //replace
true *[waterlogged=false]'
tip_replace_regex_5: '&7Tipp: Ersetze mit den folgenden Operatoren:&c //replace
true *[level-=1]'

View File

@ -112,7 +112,7 @@ worldedit:
selection_chunk: Chunk geselecteerd (%s0) selection_chunk: Chunk geselecteerd (%s0)
selection_chunks: Chunks geselecteerd (%s0) - (%s1) selection_chunks: Chunks geselecteerd (%s0) - (%s1)
selection_contract: Region contracted %s0 blokken. selection_contract: Region contracted %s0 blokken.
selection_count: %s0 Blokken geteld. selection_count: '%s0 Blokken geteld.'
selection_distr: '# Totaal aantal blokken: %s0' selection_distr: '# Totaal aantal blokken: %s0'
selection_expand: Regio vergroot met %s0 blokken. selection_expand: Regio vergroot met %s0 blokken.
selection_expand_vert: Regio vergroot met %s0 blokken (van boven naar beneden) selection_expand_vert: Regio vergroot met %s0 blokken (van boven naar beneden)
@ -134,14 +134,14 @@ worldedit:
brush_target_mode_set: Target mode gezet naar %s0 brush_target_mode_set: Target mode gezet naar %s0
brush_target_mask_set: Target mode gezet naar %s0 brush_target_mask_set: Target mode gezet naar %s0
brush_target_offset_set: Uitschietting van de target gezet tot %s0 brush_target_offset_set: Uitschietting van de target gezet tot %s0
brush_equipped: Brush in gebruik: %s0 brush_equipped: Brush in gebruik %s0
brush_try_other: |- brush_try_other: |-
&cEr zijn betere brushes hier voor te gebruiken e.g. &cEr zijn betere brushes hier voor te gebruiken e.g.
&8 - &7//br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00] &8 - &7//br height [radius=5] [#clipboard|file=null] [rotation=0] [yscale=1.00]
brush_copy: Links klik de fundering van de constructie om te kopieëren, rechts klik om te plakken. verhoog brush_copy: Links klik de fundering van de constructie om te kopieëren, rechts klik om te plakken. Verhoog
de brush Settings als dat mogelijk is. de brush Settings als dat mogelijk is.
brush_height_invalid: Onvalide hoogte map file (%s0) brush_height_invalid: Onvalide hoogte map file (%s0)
brush_smooth: 'Note: Gebruik de blend brush om caves en hangende dingen glad te krijgen.' brush_smooth: Gebruik de blend brush om caves en hangende dingen glad te krijgen.'
brush_spline: Klik Om een bevestigingspunt te zetten, klik hetzelfde punt om het af te ronden. brush_spline: Klik Om een bevestigingspunt te zetten, klik hetzelfde punt om het af te ronden.
brush_line_primary: Punt %s0 toegevoegt, klik op een andere locatie om de lijn te creëeren. brush_line_primary: Punt %s0 toegevoegt, klik op een andere locatie om de lijn te creëeren.
brush_catenary_direction: Punt %s0 toegevoegt, klik naar de directie waar je brush_catenary_direction: Punt %s0 toegevoegt, klik naar de directie waar je
@ -160,7 +160,7 @@ worldedit:
brush_transform: Brush transform gezet brush_transform: Brush transform gezet
brush_material: Brush material gezet brush_material: Brush material gezet
rollback: rollback:
rollback_element: %s0 aan het ontdaan maken. rollback_element: aan %s0 het ontdaan maken.
tool: tool:
tool_inspect: Inspect tool gebonden aan %s0. tool_inspect: Inspect tool gebonden aan %s0.
tool_inspect_info: '&7%s0 veranderd %s1 to %s2 %s3 geleden' tool_inspect_info: '&7%s0 veranderd %s1 to %s2 %s3 geleden'
@ -191,7 +191,7 @@ worldedit:
biome_list_header: 'Biomes (page %s0/%s1):' biome_list_header: 'Biomes (page %s0/%s1):'
biome_changed: Biotopen zijn veranderd in %s0 columns. biome_changed: Biotopen zijn veranderd in %s0 columns.
utility: utility:
kill_success: %s0 entities zijn vermoord in een radius van %s1. kill_success: entities %s0 zijn vermoord in een radius van %s1.
nothing_confirmed: Je hebt geen acties die bevestigt moeten worden. nothing_confirmed: Je hebt geen acties die bevestigt moeten worden.
page_footer: Gebruik %s0 om naar de volgende pagina te gaan page_footer: Gebruik %s0 om naar de volgende pagina te gaan
schematic: schematic:
@ -269,11 +269,11 @@ cancel:
chunk-wait op te krikken.' chunk-wait op te krikken.'
navigation: navigation:
ascend_fail: Geen vrije plekken boven je gesignaleerd. ascend_fail: Geen vrije plekken boven je gesignaleerd.
ascended_plural: %s0 levels verlaagt. ascended_plural: levels %s0 verlaagt.
ascended_singular: Ascended a level. ascended_singular: Ascended a level.
unstuck: There you go! unstuck: There you go!
descend_fail: geen vrije plekken onder je gesignaleerd. descend_fail: geen vrije plekken onder je gesignaleerd.
descend_plural: %s0 levels gedaald. descend_plural: levels %s0 gedaald.
descend_singular: Een level gedaald. descend_singular: Een level gedaald.
whoosh: Whoosh! whoosh: Whoosh!
poof: Poof! poof: Poof!
@ -308,9 +308,15 @@ tips:
tip_set_linear: '&7Tip: Zet een blok lineaire met &c//set #l3d[wood,bedrock]' tip_set_linear: '&7Tip: Zet een blok lineaire met &c//set #l3d[wood,bedrock]'
tip_surface_spread: '&7Tip: Verpsreid een oppervlakte met &c//set #surfacespread[5][0][5][#existing]' tip_surface_spread: '&7Tip: Verpsreid een oppervlakte met &c//set #surfacespread[5][0][5][#existing]'
tip_set_hand: '&7Tip: Gebruik je huide hand met &c//set hand' tip_set_hand: '&7Tip: Gebruik je huide hand met &c//set hand'
tip_replace_regex: '&7&7Tip: Vervang door regex:&c //replace .*_log <pattern>'
tip_replace_regex_2: '&7&7Tip: Vervang door regex:&c //replace .*stairs[facing=(north|south)]
<pattern>'
tip_replace_regex_3: '&7&7Tip: Vervang door operators:&c //replace water[level>2]
sand'
tip_replace_regex_4: '&7&7Tip: Vervang door operators:&c //replace true *[waterlogged=false]'
tip_replace_regex_5: '&7&7Tip: Vervang door operators:&c //replace true *[level-=1]'
tip_replace_id: '&7Tip: Vervang alleen het blok id:&c//replace woodenstair #id[cobblestair]' tip_replace_id: '&7Tip: Vervang alleen het blok id:&c//replace woodenstair #id[cobblestair]'
tip_replace_light: 'Tip: Verwijder licht met with&c//replace #brightness[1][15] tip_replace_light: 'Tip: Verwijder licht met with&c//replace #brightness[1][15]'
0
tip_tab_complete: 'Tip: The replace command supports tab completion' tip_tab_complete: 'Tip: The replace command supports tab completion'
tip_flip: 'Tip: Mirror met &c//flip' tip_flip: 'Tip: Mirror met &c//flip'
tip_deform: 'Tip: Verander het van vorm met &c//deform' tip_deform: 'Tip: Verander het van vorm met &c//deform'
@ -321,11 +327,12 @@ tips:
tip_replace_marker: 'Tip: verander een blok in je volle klipbord met &c//replace tip_replace_marker: 'Tip: verander een blok in je volle klipbord met &c//replace
wool #fullcopy' wool #fullcopy'
tip_paste: 'Tip: Plaats met &c//paste' tip_paste: 'Tip: Plaats met &c//paste'
tip_lazycopy: 'Tip: lazycopy is sneller' tip_lazycopy: 'Tip: Lazycopy is sneller'
tip_download: 'Tip: probeer &c//download' tip_download: 'Tip: Probeer &c//download'
tip_rotate: 'Tip: orïenteer met &c//rotate' tip_rotate: 'Tip: Orïenteer met &c//rotate'
tip_copy_pattern: 'Tip: Om een pattern te gebruiken, probeer &c#copy' tip_copy_pattern: 'Tip: Om een pattern te gebruiken, probeer &c#copy'
tip_regen_0: 'Tip: Gebruik een biome met /regen [biome]' tip_regen_0: 'Tip: Gebruik een biome met /regen [biome]'
tip_regen_1: 'Tip: gebruik een seed met /regen [biome] [seed]' tip_regen_1: 'Tip: Gebruik een seed met /regen [biome] [seed]'
tip_biome_pattern: 'Tip: Dee &c#biome[forest]&7 pattern kan ik elke opdracht gebruikt worden' tip_biome_pattern: 'Tip: Dee &c#biome[forest]&7 pattern kan ik elke opdracht gebruikt worden'
tip_biome_mask: 'Tip: Er wordt een restrictie geplaatst op de biome met `$jungle` mask' tip_biome_mask: 'Tip: Er wordt een restrictie geplaatst op de biome met `$jungle` mask'
tip_discord: 'Heb je hulp nodig bij FAWE? https://discord.gg/ngZCzbU'